2014-01-27 52 views
3

我在加載utf8文件時遇到LOAD DATA LOCAL INFILE問題。 查詢看起來是這樣的:帶有特殊字符的MySQL LOAD DATA INFILE問題

LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE artikel CHARACTER SET UTF8 
FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\r\n'; 

但隨着特殊字符,如「Dämmung」字段將被下調爲「d」。

SHOW VARIABLES LIKE '%_set_%'; 

顯示它全部設置爲utf8,甚至使用記事本++來確保文件是utf8。

這將真正幫助,如果有人知道的意見,這是一個巨大的文件,我想避免手動輸入錯誤的字段: -/

+0

您需要設置連接,數據庫,表格和列編碼與數據保存在CSV文件中相同的字符集。 –

+0

@SathishD:不,你沒有 - 但即使你做了,OP也聲明所有字符集變量已經設置爲utf8。儘管如果列編碼*不支持文件中的所有字符*(不必與文件編碼相同),數據可能會被截斷。 – eggyal

+0

感謝您的快速解答!原因是我的選擇查詢,它沒有正確更新表,所以上面的查詢是正確的。 Sry傢伙,我的錯 – user3181103

回答

3

我有同樣的問題。 有一個「黑客」可以解決這個問題:用UTF8保留所有內容。 「LOAD DATA LOCAL ....」例外。當我使用LATIN1而不是UTF8時,它工作正常。

0

不幸的是,LOAD DATA不接受utf8輸入,無論在cli選項上傳遞了哪些charset並由表使用。我沒有在文檔中找到它,並認爲它是一個錯誤。

解決方法是使用mysqlimport代替。該解決方案的缺點是,如果你想在導入過程中禁用外鍵檢查(不適用於MyISAM表),你將不得不在全球範圍內禁用它,這需要SUPER權限:

echo "SET GLOBAL FOREIGN_KEY_CHECKS=0;" | mysql -u root -p