我正在使用mysqlimport將.txt文件中的一些數據導入到MySQL數據庫表中。它似乎導入OK(沒有錯誤信息),但在顯示時看起來很奇怪,並且無法按預期搜索。將文本導入到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%";
任何人能猜到會是這樣嗎?我覺得它一定是編碼問題,但我無法解決。
------ UPDATE --------
好了,我檢查了數據庫和連接編碼。
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的新表,並導入現有的文件
- 複製粘貼&文成我以前導入另一個文本文件罰款,並試圖導入。
還是徹底的困惑:(((
謝謝。我已經檢查了這一點,並在上面更新了,但沒有運氣......有什麼明顯的我仍然失蹤? – AP257 2010-02-03 11:16:57
如果字符編碼集是正確定義的,那麼唯一的其他建議是確保您所使用的終端也是UTF-8(如果您複製/粘貼語句)。否則,對不起,我沒有其他建議。 – macabail 2010-02-03 17:17:16