我正在使用 mysqlimport 将 .txt 文件中的一些数据导入 MySQL 数据库表。似乎导入正常(没有错误消息),但显示时看起来很奇怪,无法按预期搜索。
这是详细信息。原始文本文件以 UTF-8 格式保存,其记录(在文本编辑器中)看起来像这样。第二个字段包括换行符:
WAR-16,52 ~~~~~ Lorem ipsum dolor sit.
Lorem ipsum dolor sit.
~~~~~ ENDOFRECORD
WAR-16,53~~~~~Lorem ipsum dolor sit.
Lorem ipsum dolor sit.
Lorem ipsum dolor sit.
Lorem ipsum dolor sit.
~~~~~ ENDOFRECORD
我要导入的数据库表非常简单:
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| id | varchar(100) | YES | | NULL | |
| text | varchar(5000) | YES | | NULL | |
+-------+---------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
当我导入文件时,这是我使用的命令:
$ mysqlimport -u root db textfile.txt --fields-terminated-by="~~~~~" --lines-terminated-by="ENDOFTHELINE" --default-character-set='utf8'
db.records_list: Records: 18778 Deleted: 0 Skipped: 0 Warnings: 18787
如果我随后要求 MySQL 显示记录,这就是我看到的内容:
mysql> select * from textfile;
|
W A R - 1 6 , 5 2 | L o r e m i p s u m d o l o r s i t .
L o r e m i p s u m d o l o r s i t .
(etc)
因此,看起来好像空格或一些奇怪的编码附加项被添加到文本中。
这是数据库查询的问题:
mysql> select * from textfile where id like "%WAR%";
什么都不返回;也不添加空格:
mysql> select * from textfile where id like "%W A R%";
只有这个命令返回任何东西
mysql> select * from textfile where id like "%W%";
谁能猜出会发生什么?我觉得这一定是编码问题,但我无法解决。
- - - 更新 - - - -
好的,我检查了数据库和连接编码。
mysql> show variables like "character_set_%";
+--------------------------+----------------------------------------+
| Variable_name | Value |
+--------------------------+----------------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+
8 rows in set (0.01 sec)
并show table status
说桌子是latin1_swedish_ci
。
我在“Western (Windows Latin 1)”中重新保存了文本文件(在 Snow Leopard 上使用 TextEdit),并尝试使用与上述相同的命令导入它。但是我仍然有同样的编码问题。
我也试过了,再次没有运气:
- 使用 UTF-8 创建新表并导入现有文件
- 将文本复制并粘贴到我之前导入的另一个文本文件中,然后尝试导入它。
仍然完全困惑:(((