1. 程式人生 > >MySQL Export--導出數據

MySQL Export--導出數據

\n mysq eight str cal lose user bsp word

===========================================================

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

MySQL Export--導出數據