2015-04-23 81 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