一、MySQL导出数据到本地文件夹
语法如下: SELECT * FROM table_name
INTO OUTFILE 'D:/xxx/xxx/xxx.csv' (这里路径要加全路径)
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
这个时候可能会出现如下错误:
[Err] 1290 - The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
原因是MySQL对导出导入文件路径有限制,解决方法:
1.进入mysql查看secure_file_prive的值
mysql>SHOW VARIABLES LIKE "secure_file_priv";
secure_file_prive=null -- 限制mysqld 不允许导入导出 我新装的mysql,我的情况就是secure_file_prive=null
secure_file_priv=/tmp/ -- 限制mysqld的导入导出只能发生在/tmp/目录下
secure_file_priv=' ' -- 不对mysqld 的导入 导出做限制
2.修改secure_file_prive的值
Windows下打开my.ini(如果是Linux的话就是my.cnf,我这里主要介绍在windows操作系统)
在mysqld下
找到secure-file-priv='xxxx',修改路径
如果没有就加一行secure-file-priv=''(注意是横线,不是下划线),添加路径或者不添加,不添加就是可以在任何目录下操作。
然后重启mysql服务即可。
二、修改完成后就可以导出文件,但是有可能还会遇到一些问题,如下:
1.[Err] 1 - Can't create/write to file 'D:\*******\mysqlFile\成绩表.csv' (Errcode: 22)
这个问题是因为路径中包含了汉字(这个感觉有点坑),比如:
我在csv文件名中有汉字,就报错了,这个问题我只能改文件名了,可能是MySQL的一个BUG。
2.数据导出到csv文件之后,打开查看,发现乱码了(windows下支持用excel文件格式打开)。
mysql表是utf8编码,excel默认编码格式是gbk,我们可以在导出的时候加上编码,问题就可以解决了,如下:
3.费了半天劲好不容易把数据导出到csv文件了,结果发现csv文件中没有字段名称,只有数据。
这样的话很多情况下无法满足客户的需求,用户关心数据,而没有字段的话用户无法理解数据的含义。
所以我们还要加上字段名称,俗称表头:
终于好了,查看结果: