拿到了一些数据,有5个表,其中4个表的数据量在几百到几万之间,利用MySQL 的workbench基本都在可以容忍的时间内完成了,但是最后一个表,大概有100W的记录,用workbench的导入工具,经常死机。乘机评估了一下workbench记录插入的效果,大概在4000条/Minute的速度。这样算下来,100W条,理论需要250分钟,四个多小时。没有办法,只能采用Load data infile命令解决。
1. 使用load data infile需要创建表,为了方便数据录入,建议表的属性都是VARCHAR类型;
2. 使用管理员身份进入DOS界面,使用命令mysql -u root -p --local-infile
命令先登入MySQL;
3. 选择需要操作的数据库: mysql> use XXX;
确认导入的表是否在选择的库中:mysql> show tables;
4. 确认local_infile是否开启,
没有开启,使用命令set global local_infile =1;
5. 写load data infile文件之前,确认一下导入源数据文件的格式,我的坑是CSV文件用Tab隔离数据项,我没有认真看,所以导入数据报错了。
我的数据中,数据用Tab分割,每行记录用换行,因此写如下语句;
mysql>load data local infile 'd:/order.csv' into table new_table fields terminated by '\t' Lines terminated by '\r\n' ignore 1 lines;
令人惊奇的事情发生了,几秒钟(7.84 sec)后,我突然发现100W的数据已经导入到数据库中。
250分-->几秒钟,没有报任何错误。
就是这么清奇的世界!