Linux下MySQL导入csv格式数据遇到的问题与解决方法总结

问题一:

Windows下的xls文件必须先转成csv格式才能导入Linux下的MySQL

问题二:

导入数据应该先设置成为非严格模式,否则因为创建表时数据类型与csv中数据的种种不匹配,会导致导入失败,报错信息是“拒绝访问”,Linux下设置非严格模式的MySQL命令如下

mysql>set @@sql_mode=ANSI
问题三:

需要导入的csv文件不能在任意文件夹下,必须在MySQL的file中
用下面的命令找到mysql-files

find \ -name mysql-files

用下面的命令将你的csv文件拷贝到mysql-files文件夹中

cp yourcsv.csv ../mysql-files/

注意:yourcsv.csv应该写全路径名,mysql-files应该根据你找到的路径名写全路径名,上面的这一条命令只说明格式,不是你应该输入的内容,如果你还有问题应该查看cp命令的相关内容

问题五:

必须先将csv文件放在MySQL的files文件夹内才能导入,否则报错“secure-file-priv”
解决:
首先查看MySQL的files文件在哪里

mysql>show global variables like '%secure_file_priv%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| secure_file_priv | NULL |
+------------------+-------+

不能直接修改secure_file_priv的值,应该打开my.cnf(注意Linux下是.cnf,windows下是.ini),加入以下语句后重启MySQL

secure_file_priv="
问题六:

csv数据中有中文,各种乱码
解决方法如下(每一步都应该设置)

  1. Linux终端设置了utf8编码(google可直接得到方法,廖雪峰的网站也有)
  2. 导入的csv文件是utf8编码(可在Windows的Excel里另存为的时候选择utf8)
  3. 创建的表是utf8编码(见下面解决方法3)
  4. 导入数据的时候是utf8编码(见下面解决方法4)
  5. Linux系统语言应该改成utf8编码(谷歌可直接得到方法,菜鸟教程也有)

解决方法4:导入数据的时候是utf8编码,MySQL导入数据的命令如下

mysql>LOAD DATA  INFILE '/var/lib/mysql-files/yourcsv.csv'
         >into table `Order` character set utf8
         >fields terminated by ',' optionally encloaed by '"' escaped by '"'
         >lines terminated by '\r\n';

说明

  1. 注意设置编码的部分character set utf8
  2. 注意 csv文件的分隔符是逗号,换号是\r\n,optionally部分是可选项,是单引号包括一个双引号

版权声明:本文为weixin_40546361原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。