2011-05-05 191 views
17

我試圖使用LOAD DATA INFILE技術將CSV加載到MySQL中。它工作正常,但我遇到了一些問題,有些列使用雙引號,有些則不使用雙引號。MySQL「LOAD DATA INFILE」並缺少雙引號

例子:

something,123,something,"Bauer, Jack",123,something 

會發生什麼是引號內的逗號打破了進口,所以我的數據全都在結尾處頂起。不知道如何獲得導入以在雙引號內轉義逗號。

mysql --user=<USER> --password=<PASS> -e "LOAD DATA INFILE '<FILENAME>' INTO TABLE <TABLENAME> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (col1, col2, col3, ...)" <DATABASE> 

回答

29

您需要用額外的選項

FIELDS OPTIONALLY ENCLOSED BY '"' 

執行語句LOAD DATA INFILE因此,整個語句成爲

LOAD DATA INFILE '<FILENAME>' INTO TABLE <TABLENAME> 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' 
(col1, col2, col3, ...) 

如需進一步閱讀,請參閱優秀MySQL Reference Manual例如對於MySQL 5.1 GA。

+0

對你的回答非常有幫助+1 – 2013-11-01 13:58:20

+0

有沒有辦法根據需要刪除引號? – 2016-03-31 20:36:12

+0

非常有幫助,謝謝。我有'FIELDS'可選地由''''覆蓋,並且'FIELDS'的重複導致了錯誤.MySQL是不可寬恕的。 – 2017-08-04 20:58:17

0

希望你已經想出了現在該怎麼做,但如果你不希望這會幫助你。

我在Excel 2007導出到自定義的CSV文件時遇到了問題。我發現你可以在這裏更改字段終止符:http://www.tek-tips.com/viewthread.cfm?qid=1635599&page=15

我更喜歡使用管道|因爲它是不常見的,並且在處理英寸「尺寸」測量時更靈活一些。

+0

不確定這與Excel有什麼關係 – dstarh 2017-05-12 17:44:19