2016-02-04 33 views
1

我已經成功地設置了自動導入表格到我的數據庫與mysqlimportLOAD INFILE而不是mysqlimport

但是,無法查看任何警告的詳細信息。相反,我想使用LOAD DATA INFILE,應該可以添加SHOW WARNINGS

但我不知道如何在我的bash腳本中使用LOAD DATA INFILE

這是我如何與mysqlimport做到這一點:

mysqlimport --fields-terminated-by="," --fields-enclosed-by=\" -u dbuser -ppassword databasename /tmp/customers.csv 

此命令將數據導入到表「客戶」。

但是我怎樣才能在我的bash文件中使用SHOW WARNINGS的附加功能做同樣的事情?

感謝您的幫助。

回答

1

-e or --execute optionmysql將接受一個或多個以分號分隔的查詢,就像在交互式shell中一樣。只需通過標準LOAD DATA INFILE查詢,然後輸入SHOW WARNINGS即可。

mysql -u dbuser -ppassword -D databasename -e 'LOAD DATA INFILE "/tmp/customers.csv" INTO TABLE foo FIELDS TERMINATED BY "," ENCLOSED BY "\""; SHOW WARNINGS' 

或者你也可以在標準輸入上傳遞查詢;我發現heredoc syntax更容易閱讀,它避免了一個級別的引號。

mysql -u dbuser -ppassword -D databasename <<SQL 
LOAD DATA INFILE '/tmp/customers.csv' INTO TABLE foo FIELDS TERMINATED BY ',' ENCLOSED BY '"'; 
SHOW WARNINGS; 
SQL 
+0

謝謝!現在它可以工作。不幸的是整理似乎出錯了。與mysqlimport外國人的字符被導入罰款,但與LOAD DATA INFILE這些字符變得混亂。兩個數據庫中的排序規則是:utf8_general_ci。 – user2298034

+1

可以通過加入: ... INTO TABLE foo CHARACTER SET utf8 FIELDS ... 感謝您的幫助。 – user2298034