1. MySQL 导出数据到指定文件中
MySQL中你可以使用 SELECT…INTO OUTFILE 语句来简单的导出数据到文本文件上。
如:将 mydb 数据库中的 sys_log 表中的数据导出到 /tmp/syslog.csv上,各值用逗号隔开
SELECT * FROM sys_log INTO OUTFILE '/tmp/syslog.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
执行导入命令时,可能会出现以下报错信息:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
问题排查如下:
用以下mysql语句 查看secure_file_priv 对应的值
show global variables like '%secure_file_priv%';
看 secure_file_priv 的值,默认为NULL,表示限制不能导入导出。
查看官方文档,secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE() 传到哪个指定目录。
- secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
- secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
- secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。
又因为 secure_file_priv 参数是只读参数,不能使用set global命令修改。
解决方法如下:
编辑 /etc/my.cnf 文件,然后在 [mysqld] 下添加以下内容:
secure_file_priv=''
然后重启 mysql 即可
2. 导出 SQL 格式的数据到指定文件中
如:将 mydb 数据库中的 sys_log 表中的数据导出到 /tmp/syslog.sql上
mysqldump -u root -p mydb sys_log > /tmp/syslog.sql