MYSQL导入大量数据

前提

跑一个推荐算法的DEMO需要导入2百万的数据

尝试1 : batch insert

不动脑的想象用batch insert, 批量提交的方式
尝试发现其实速度并不乐观,2000条/分钟的写入速度,
200 0000 / 2000 = 100分钟,速度不能接受,尝试其他办法。

尝试2 : load data infile

大批量数据的正确方式就文件导入方式进行,个人觉得10万数据以上用batch insert就比较吃力了。
load data方法只支持mysql 5.5版本及以上
执行步骤:

  1. 检测mysql是否设置支持load data的执行
SHOW VARIABLES LIKE "secure_file_priv";

secure_file_prive=null 限制mysqld 不允许导入导出
secure_file_priv=/tmp/ 限制mysqld的导入导出只能发生在/tmp/目录下
secure_file_priv=' ' 不对mysqld的导入导出做限制
修改secure_file_prive,直接找到my.ini中secure_file_prive修改为空重启mysql即可

my.ini.png

  1. 执行load data file 语句
LOAD DATA INFILE "ratings.dat" REPLACE INTO TABLE movie_preferences FIELDS TERMINATED BY "::";

随意执行,如果位置不对会给出相应的提示位置,然后再将需导入的文件copy至相应位置再执行即可(load data infile语法需自行了解。)

执行.png

  1. 执行结果
    最后发现执行数据时间大幅度减少,200万数据只需要1分钟左右就导入成功。

你可能感兴趣的:(MYSQL导入大量数据)