1

我有 txt 管道分隔文件(非英语 - 下面给出的是波兰语,但也涉及其他语言),编码为 utf16,类似于:

头1|头2|头3|头4
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,例如:

 
将数据输入文件“C:/\wamp/\www/\hmvc/\prop_tst.txt”装入表 hmvc.table 字符集“utf8”字段以“|”结尾 由 '\n' \g 终止的行

我总是得到:

  • 乱码(错误编码)条目

  • 没有输入任何内容(sql 写入默认值)

顺便提一下:我还在 utf8、utf16、latin2(用于东欧编码)...和 ​​nada 中设置了表格。

顺便说一句:当我更改编码时,例如在记事本中更改为 utf8,我可以导入 - 没问题,但是如果我有需要 utf16(亚洲)的字符,或者我想自动输入文件怎么办?

Php iconv 等似乎不能胜任这项工作。

任何帮助,链接到一些阅读等将不胜感激,因为我刚刚没有想法。

4

2 回答 2

5

LOAD DATA INFILE语法中所述:

 笔记

无法加载使用ucs2utf16utf32字符集的数据文件。

UTF-8 可以表示与 UTF-16 相同的完整 Unicode 代码点集。也许只使用这种编码最简单(或者在导入其他语言之前对文件进行转码,例如通过 PHP 的iconv()函数)?

于 2012-09-16T14:46:13.640 回答
2

不能UTF-16格式的.txt文件(或微软称之为“ UNICODE ”文本文件)导入 MySQL。您可以在此处阅读该声明。我发现最好的选择是 - 下载TextPad并打开您的文本文件,然后单击Save As并确保选择ENCODING: UTF-8。然后,您可以轻松地将该文件直接加载到您的 SQL 表中。我在不到 10 秒的时间内上传了大约 250 万条记录。

当前无法使用 LOAD DATA INFILE 来加载使用这些字符集的数据文件。- MySQL 文档

于 2017-03-22T18:43:12.237 回答