我有txt管道分隔文件(非英语 - 下面给出的是波兰语,但其他lang也参与其中),编码utf16,类似于:
head1|head2|head3|head4 brytyjski wytwórca|z jakże bogatą|przedwojenną historią|zapowiedział wypuszczenie dziś znamy|jedynie paletę kolorów|obejmującą aż|jedną pozycję
我尝试了很多不同的方法将它放入mysql表中:
使用php逐行
以任何我能想到的方式通过控制台使用LOAD DATA INFILE,例如:
LOAD DATA INFILE 'C:/\wamp/\www/\hmvc/\prop_tst.txt' INTO TABLE hmvc.table CHARACTER SET 'utf8' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n' \g
我总是得到:
乱码(错误编码)条目
没有输入任何内容(sql写入默认值)
提一下:我还在utf8,utf16,latin2(东欧编码)......和nada中设置了表格。
顺便说一句: 当我改变编码时,例如在utf8的记事本中我可以导入 - 没问题,但如果我有字符需要utf16(亚洲),或者我想自动输入文件?
Php iconv等似乎无法胜任这项工作。
任何帮助,链接到一些阅读等都会非常感激,因为我刚刚从想法中解脱出来。
答案 0 :(得分:4)
注意
无法加载使用
ucs2
,utf16
或utf32
字符集的数据文件。
UTF-8可以表示与UTF-16相同的全套Unicode代码点。也许最简单的方法是只使用那种编码(或者在导入之前用其他语言对文件进行转码,例如通过PHP的iconv()
函数)?
答案 1 :(得分:1)
You can not import UTF-16 formatted .txt files (or as Microsoft calls them "UNICODE" text files) into MySQL. You can read about that statement here. What I found the best option to do was - download TextPad and open your text file, then click Save As and make sure you select for ENCODING: UTF-8. Then you can load that file directly into your SQL Table easily. I uploaded about 2.5 million records in less than 10 seconds.
It is currently not possible to use LOAD DATA INFILE to load data files that use these character sets. - MySQL Documentation