热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql使用loaddatainfile导入数据

做阿里天池编程题时候,需要导入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秒

 

 至此导入完毕。

以上就是我导入大批量数据排错的全过程,估计许多码农第一次导入也遇到类似的问题,欢迎参考。

 



推荐阅读
author-avatar
mobiledu2502875803
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有