===========================================================
SELECT INTO OUTFILE
语法格式:
SELECT [columns] INTO OUTFILE ‘FileName‘ [{FIELDS|COLUMNS} TERMINATED BY ‘String‘] [[OPTIONALLY] ENCLOSED BY ‘char‘] [LINES [STARTING BY ‘string‘] [TERMINATED BY ‘string‘]] FROM TABLE_NAME WHERE ...
在将选择的记录导出到.csv文件时,出现提示“The MySQL server is running with the --secure-file-priv option so it cannot execute this statement”。
解决办法:
在配置文件的[mysqld]部分增加secure_file_priv="/",然后重启既可以将数据导出到任何目录。
参考连接:https://dev.mysql.com/doc/refman/5.7/en/server-options.html
由于Linux的换行符为\n,而Windows 的换行符为\r\n ,因此在导出供windows使用的数据文件时,要指定换行符。
Windows下csv文件默认使用gbk字符集,因此导出脚本为:
SELECT HOST,USER INTO OUTFILE ‘/tmp/tb001.csv‘ CHARACTER SET gbk FIELDS TERMINATED BY ‘,‘ OPTIONALLY ENCLOSED BY ‘"‘ ESCAPED BY ‘\\‘ LINES TERMINATED BY ‘\r\n‘ FROM mysql.user;
===========================================================
mysql命令导出
使用mysql命令来执行命令或命令文件,并将执行结果输出到文件中。
相关参数:
--verbose: 输出结果中包含执行命令 --vertical:垂直方式显示执行结果(类似于\G) --unbuffered: 每执行一条SQL语句都刷新执行结果。 --skip-column-names:输出结果中不包含列名 --batch:禁用交互模式 --silent:数据列使用tab分隔,数据行使用换行显示 --execute:执行命令并退出
使用mysql执行命令导出csv文件:
/export/servers/mysql/bin/mysql \ --host="127.0.0.1" \ --port=3358 \ --user="root" \ --password="root" \ --database="mysql" \ --batch \ --execute "select host,user from mysql.user where user=‘root‘;" \ | sed "s/‘/\‘/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > /tmp/mysql_user.csv
使用mysql执行命令文件并输出每条SQL及其执行结果:
/export/servers/mysql/bin/mysql --host="127.0.0.1" \ --port=3358 \ --user="root" \ --password="root" \ --database="mysql" \ --verbose \ --batch \ </tmp/mysql_user.sql 1>/tmp/mysql_user.log 2>/tmp/mysql_user.err
原文:https://www.cnblogs.com/gaogao67/p/10638199.html