MySQL到CSV幾種方法

weixin_34115824發表於2017-11-12

資料的匯出匯入,最常用的方法:

匯出:

省資源型:

mysql -e "select * from aa" -s -s >aa.txt

 匯入:

load data infile '/tmp/user_type_2017-08-21.txt' into table aa fields terminated by '\t'

    

##耗資源型:

 SET NAMES "utf8" 

select * from ricci_var into outfile'/tmp/var.csv' fields terminated by ',' optionally enclosed by '"' lines terminated by '\n'

匯入:

 SET NAMES "utf8" 

load data infile "/tmp/var.csv"into table ricci_var fields terminated by ',' optionally enclosed by '"' lines terminated by '\n'

在某些特殊的情況下,是無法這麼操作的,如垃圾的RDS,就需要這麼操作了:

匯出:

usr/local/mysql/bin/mysql -h192.168.1.10 -udlan -proot123 test -e"
SELECT * FROM manufactor_user_info  where date(create_time)<='2017-05-02'" -N -s |sed 's/\t/","/g;s/^/"/;s/$/"/;s/\n//g'> /tmp/test.csv
匯入:
 SET NAMES "utf8" 
load data infile '/tmp/test.csv' into table manufacturer_log fields terminated by ',' optionally enclosed by '"' lines terminated by '\n'
###具體的匯出條件自己懂的。在匯出的資料需要進行簡單的清洗,有可能會碰到某某行的資料段資料錯誤或者定義錯誤這樣的提示.Wrong data or column definition. Row: 69697, field: 43.
這樣的提示主要是由於資料存在問題的需要清洗,從MYSQL匯入infobright 會這樣提示,可以設定  SET @BH_REJECT_FILE_PATH = '/tmp/reject_file';
SET @BH_ABORT_ON_COUNT = 10;(自定定義錯誤條數)
可以通過這個觀察資料問題所在。
再者就是匯出的時候,有許可權問題,如:
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement 
解決辦法:  
    1. 設定安全目錄: vi /etc/my.cnf  
    secure-file-priv=/home/自己的目錄/  
    2. 有許可權寫入目錄/home/自己的目錄/ (5.7的需要設定)

再辦法是:

    mysqldump 導成SQL檔案

最後辦法:

    匯出:mysql -udlan -proot123 --database=test --execute='SELECT a, b FROM aaa LIMIT 0, 10000 ' -X > file.csv

    匯入:

 SET NAMES "utf8" 


            load xml infile '/tmp/file.csv' into table user_info1     


本文轉自 DBAspace 51CTO部落格,原文連結:http://blog.51cto.com/dbaspace/1921640

相關文章