刚完成了一件事,虽然不难,觉得挺好玩,在这里写写。。。
从Access中提取若干信息,导入到mysql中。
嗯,多简单的事呀。。。不过是SQL语句的导入导出嘛。。。我开始真的是这么想的。。。
做的时候发现,Access没有导出SQL的功能,不想用第三方的东西。。。
这里简单描述下我是怎么做的吧!
1、在access中建个视图,得到自己想要的数据;
2、把这个视图查询到的数据,导出成文本格式,我用的是CVS;
3、用文本编辑器,把导出的数据 处理成 SQL语句(多亏了vim,用其他编辑器都不知道怎么办才好,打开都成问题,更不用说快速编辑了。。。UE打开后,滚轮都滚不动的说。。。);
4、用mysql命令,导入mysql。
思路很清晰,我就这么做了。直到最后一步,才发现问题:数据量太大(68万条),这一步很慢很慢。
慢也就罢了,只做一次(等了我近2个小时),没什么关系。。。可是,马上发现,数据中时间格式不对。比如Access中是2011-1-1,而mysql这边,期望得到的是2011-01-01,就这一个时间,要改动几十万条记录,还不如重新导一份新的呢。。。
于是,重复步骤2,得到数据。
因为导入过程慢的实在太离谱了,就找了个mysqldump 备份出来的文件来看,看一看mysql官方觉得怎样导入数据会更快,于是发现了诸如下面的内容:
LOCK TABLES `tablename` WRITE;
ALTER TABLE `tablename` DISABLE KEYS;
INSERT INTO `tablename` (id,name,password) VALUES
-- 这里是数据
;
ALTER TABLE `tablename`ENABLE KEYS;
UNLOCK TABLES;
很明显,这里的SQL从3个方面做了优化:
1、加了只写的锁(解锁之前,不能查询,索引 只在 最后做 一次,插入数据 就会快啦);
2、Disable了所有键(于是,就不用再做外键检查了,全心插入数据);
3、insert into 用一条语句完成(一条语句 和 多条语句 的性能,差别不是一般的大啊,想想也觉得是。。。)。
这样之后,几分钟就能搞定。
另外,说一点文本处理的。。。
一开始,习惯性的,要写成一条一条的SQL,于是想到了用宏来做。宏很简单,小数据量非常方便,不用大脑怎么思考。但是,做了一会,发现实在太慢了,大数据量,处理不了。
我平时很少写vim脚本,现在想来,用脚本也会很慢,毕竟要一行行的执行呀。。。
于是乎,写正则,查找替换。很快,几秒钟搞定一次替换。正则的威力,真不是一般的强大啊。。。上面说的时间格式的转换,也是在这里做的。
注意:如果你的文本很好看,可以试试列编辑。一般行首适用,后面 几乎都不可用了。。。效率还不错。。。
这里要说的是,不要把多行数据变成一行,没这个必要。变成一行后,可读性会变的很差,文本处理会变的非常的慢。如果一行匹配的次数过多,用g这个参数,往往会很慢。。。
就说这些吧。。。
重新理了下思路。。。
下次估计10分钟就能搞定这样的事。。。
分享到:
相关推荐
将IP城市ACCESS数据库写入Mysql-将ACCESS数据库导入Mysql的范例 数据库是网上搜集的,如果有更新版的数据库请跟帖贴出地址。 一共328380条数据,按照每次写入1000个数据,大约需要30秒钟。单次数据量过大会报错。 将...
access数据搬到mysqlaccess数据搬到mysqlaccess数据搬到mysql
可将Access脚本文件导入MySQL中,避免不会使用Access数据库的尴尬
access数据导入MYSQL,数据表导入。
asp通过DSN链接mysql数据库并将access的数据导入到discuz的mysql中,绝对原创作品,如假保换。
最近在搞Access数据库到Mysql迁移,编了一个简单的工具,用VB6编写的。 功能介绍: 1、可以直接编辑Mysql数据库...导入之前,请先用Mysql Query Browser创建一个与Access表结构一样的表,然后再使用这个工具导入。 交流
我用的是MySQLdb库,连接的数据库也可用其他库连接。首先要安装配置MySQLdb库,网上有此处不再介绍。直接下载文件里面有详细注释、稍微改下即可用。
我也是因为需要到处找,终于找到这款软件的,我找了一天,经过测试的,本软件用于mysql数据库数据转换为access数据,然后导入到sqlserver,这样就可以实现mysql到sqlserver的转换,并且附带我自己运行的界面哦,差点...
如果想要将SQL SERVER的数据库转换到MYSQL,也可以使用这个软件,具体操作是先使用SQL SERVER的“导入和导出数据”将SQL SERVER数据导出到ACCESS文件,然后再将ACCESS文件导出为MYSQL语句。 运行转换功能后,系统会...
如何把ACCESS的数据导入到Mysql中
Access2MySQL,将Access表中的数据导入到MySQL数据库中。完美解决Access数据库迁移升级问题。
一款免费的可以将access数据批量上传到mysql数据库的工具。可以批量将火车头采集的数据库批量导入到mysql数据库里面,运行效率很高速度快。
第二步:先在mysql中建立一个同样结构的表(当然,这步可以在第三步中用程序实现,由于时间仓促,我未能完成,抱歉) 第三步:也就是自己编程了,想办法把导出的文件用程序把每条记录读出并写入到Mysql数据表当中,...
快速进行Access数据库转成mysql数据库及mysql导入中文数据乱码问题的解决方案.pdf