作者:mobiledu2502875803 | 来源:互联网 | 2023-06-03 06:42
做阿里天池编程题时候,需要导入sql数据,但是sql数据很大,总共有2g多。 由于没怎么做过运维,不会搞大批量数据的导入,就把里面的sql复制粘贴出来,然后粘贴到sqlyog里面
做阿里天池编程题时候,需要导入sql数据,但是sql数据很大,总共有2g多。
由于没怎么做过运维,不会搞大批量数据的导入,就把里面的sql复制粘贴出来,然后粘贴到sqlyog里面慢慢执行,效率其低而且还出错不好验证。
大批量sql导入MySQL,参考了网上的帖子,使用load data infile导入,效果显著
参考
https://blog.csdn.net/weixin_41013322/article/details/105658594 百万级数据导入mysql的几种方式
https://blog.csdn.net/longzhoufeng/article/details/112377942 load data infile命令的参数详解
首先需要打开mysql命令行登录mysql 选择好数据库。
初次使用 load data infile 命令 ,我一上来就执行,结果报错。
后来到网上搜索了一番,发现是导入时候文件路径不对,所以又调整了一下
还是报错不能执行该命令,就有点困惑了。。指定了文件路径,还是报1290错误。。继续找原因。。
看到网上帖子说,要查看一下secure_file_priv变量是否指定了值,就是是否限制使用load data infile输入输出,发现我的参数是有值得,就在安装的mysql的Uploads目录下面:
既然指定了文件路径,为啥还不能执行呢。。继续找原因。。
找了好多帖子才发现,我的local_infile变量值是off,需要设置为on打开,才能使用load data命令 set global local_infile=ON;
需要顺带提一下,这个地方也要检查一下sql_mode的值,不能是严格的sql,要设置为空
设置后再次查询sql_mode已经没有strict 模式了,现在再次用Load导入看看
设置完之后再次导入还是报错,,这个时候报错信息是2068,路径错误。。非常愁,但此时离成功已经很近了。仔细排查发现是路径写法不对,要用//代替\,要不然识别不出来。重新测试之后导入成功,4898条数据一共0.31s,效率很高
以此类推,将其他几个文件也导入进去
1142w条,4分3秒
至此导入完毕。
以上就是我导入大批量数据排错的全过程,估计许多码农第一次导入也遇到类似的问题,欢迎参考。