2015-04-23 85 views
0

我想將具有~60k行的.xlsx文件導入到MySQL。一些列包含越南文字符。我設法從.xlsx轉換爲.csv而不會搞亂字符集。但是,在將.csv導入MySQL時,我無法做到這一點。在將.CSV文件導入到MySQL時保留字符集

我用LOAD DATA INFILE。它看起來是這樣的:

LOAD DATA LOCAL INFILE 'c:/Projekt/Big Data/events.csv' 
INTO TABLE database.table 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES; 

(來源:http://blog.habrador.com/2013/01/how-to-import-large-csv-file-into-mysql.html

這種方法導入數據不錯,但字符集的越南字符完全搞砸了。我確實將表格的歸類改爲utf8_unicode_ci

我還用較小的數據集測試了MySQL的傳統導入方法,它完美保留了字體。但是我無法使用它,因爲我的文件大小超過了MySQL的限制。

非常感謝,如果有人能幫助我這個。

+1

我認爲你的問題是誤導。 「字體」表示字符的可變外觀,例如,字體Arial,Times New Roman等。CSV和MySQL都不是有任何字體概念的系統。我想你只是在導入數據時正確地討論**處理編碼。爲此:1)您的CSV文件是什麼編碼,2)您如何準確導入它? – deceze

回答

2

儘量明確的字符集由進口註明:

LOAD DATA LOCAL INFILE 'c:/Projekt/Big Data/events.csv' 
INTO TABLE database.table 
CHARACTER SET utf8 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES; 

See docs約從文件加載更多細節。

+1

如果您在識別哪些字符集需要使用時遇到問題,或者確實如果您可能將不同的字符集存儲在不同的行中,請使用'CHARACTER SET binary'來加載數據而不進行任何轉換。 –

+0

感謝Injecto。我試過你的方法,但MySQL顯示錯誤。 – user3661376

+0

你能解釋一下更多關於使用CHARACTER SET二進制加文嗎? – user3661376