今天需要用mysql导出CSV格式,给数据团队,发现其中有几个坑,记录一下
- SQL语句
1 | SELECT * |
- 提示SQL错误
1 | ERROR 1045 (28000): Access denied for user 'usr'@'%' |
这个不是因为数据库账号的密码有问题,而是该用户没有FILE
权限,这个权限在腾讯云MySQL中默认没有,所有我只能导出到本地测试
- 另一个错误提示
1 | The MySQL server is running with the --secure-file-priv option so it cannot execute this statement |
默认情况下,MySQL 导出文件时,只能使用安全目录,可以通过
1 | SHOW VARIABLES LIKE "secure_file_priv"; |
查看情况。这里的修改方案
修改my.cnf
或则my.ini
中mysqld
中的字段secure-file-priv
1 | [mysqld] |
并重启mysql服务
遗留问题
在导出CSV的时候,只能导出数据,不能带有表的字段名。虽然通过网上的方法
1 | select * into outfile '/tmp/xxxx.csv' fields terminated by ',' lines terminated by '\n' from (select 'col1','col2','col3','col4' union select column1,column2,column3,column4 from table_name) b |
依然没有效果,回头继续尝试一下