MySQL Export--導出數據
阿新 • • 發佈:2019-04-01
\n mysq eight str cal lose user bsp word 解決辦法:
在配置文件的[mysqld]部分增加secure_file_priv="/",然後重啟既可以將數據導出到任何目錄。
參考連接:https://dev.mysql.com/doc/refman/5.7/en/server-options.html
===========================================================
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 TERMINATEDBY ‘,‘ 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--導出數據