美文网首页
踩坑记录之csv数据导入MySQL

踩坑记录之csv数据导入MySQL

作者: 老饕_Ljw | 来源:发表于2020-10-03 21:44 被阅读0次

可能采坑的操作

  1. 将excel表格转换成csv 逗号分隔,然后notepad检查文件是否是utf8编码,保存。


    image.png
  2. 打开 phpMyAdmin , 选择要导入的表格,然后点击导入;


    导入设置
  3. 点击执行之后,可能会等很久很久很久。。。。取决与数据量的大小,如果等了很久还没导入成功或者导入失败,亦或者数据导入一半就中断。。。 那么可能要注意一下几点

  • phpMyAdmin 是用php写的,所以需要注意php超时的问题,数据量太大,超过了超时值 ,那么导入脚本会停止,导致数据导入中断。将php超时设为合适的大小即可。
  • PHP超时参数设置了,csv文件格式也没有问题。。那可能是网络的问题。。或者其他我不知道的原因,导致数据传到一半就502(我今天就是)。。。sad
  • 换一个导入姿势


    令人难过的提示

进阶操作

  • 因为之前一直用的上一种操作将数据导入MySQL,所以这次出了问题,就一直死磕。。。结果白白浪费了一堆时间,有时候一条路走不通的时候,还是需要想想其他办法


    image.png
将csv文件上传到服务器,然后MySQL本地导入
  1. 将整理好的 csv文件(逗号分隔),上传到 /tmp/ 目录下 ,因为mysql默认使用了 /tmp 作为临时读写目录。否则可能会报没有权限之类的错误。
  2. 使用这条语句show variables like '%secure%';查询mysql文件的导入和导出路径是否有默认的路径设置,或者是默认不允许导入导出
  3. 导入语句,其中 csv 里面的列数要和表里面的一一对应;csv文件必须是文件的绝对路径;FIELDS TERMINATED BY: 指定分隔符;LINES TERMINATED BY: 指定换行符
#注意:Windows操作系统采用两个字符来进行换行,即CRLF;Unix/Linux/Mac OS X操作系统采用单个字符LF来进行换行;另外,MacIntosh操作系统(即早期的Mac操作系统)采用单个字符CR来进行换行。
CR:Carriage Return,对应ASCII中转义字符\r,表示回车
LF:Linefeed,对应ASCII中转义字符\n,表示换行
CRLF:Carriage Return & Linefeed,\r\n,表示回车并换行
#导入MySQL之前,可以先查看一下文件的换行符是哪种,否则可能发生导入错误。
LOAD DATA INFILE '/tmp/longan.posAnno.csv' INTO TABLE longan_GeneSearch_GenePosAnno FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
  1. 如果出现报错:The MySQL server is running with the –secure-file-priv option so it cannot execute this statement,则使用这条语句show variables like '%secure%';查询mysql文件的导入和导出路径是否有默认的路径设置,或者是默认不允许导入导出。
secure-file-priv的值有三种情况:
secure_file_prive=null ––限制 mysql 不允许导入导出
secure_file_priv=/path/ – –限制 mysql 的导入导出只能发生在默认的/path/目录下
secure_file_priv=’’ – –不对 mysql 的导入和导出做限制
  • 打开MySQL的配置文件 my.cnf :vim /etc/my.cnf
  • 在该文件中添加一行内容:secure_file_priv =
  • 重启 MySQL,然后查看show variables like '%secure%'; 显示如下图即可正常导入数据。
不对mysqld 的导入 导出做限制

写在最后

我是爱狗子的老饕,
转眼就研三,过去的这两年在各位大佬的照顾下,学到了不少东西,感谢。
一条路走不通的时候,要学会放过自己,换条路也许会更好,读研读博亦是如此,有些东西确实犯不着,最最最最最重要的当然是开心啦! 哈哈哈

相关文章

网友评论

      本文标题:踩坑记录之csv数据导入MySQL

      本文链接:https://www.haomeiwen.com/subject/olvwuktx.html