Я импортирую некоторые данные из файла .txt в таблицу базы данных MySQL, используя mysqlimport.Кажется, что он импортирует «ОК» (без сообщений об ошибках), но при отображении выглядит очень странно и не может быть найден должным образом.
Вот подробности.Исходный текстовый файл сохраняется в 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)
Итак, похоже, что пробелы или некоторые странные дополнения кодирования добавляются вtext.
А вот проблема с запросом к базе данных:
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) "(используя TextEdit на Snow Leopard) и попытался импортировать его, используя ту же команду, что и выше.Однако у меня все еще есть та же проблема кодирования.
Я также попытался, опять же без удачи:
- создание новой таблицы с UTF-8 и импорт существующего файла
- копирование и вставка текста в другойтекстовый файл, который я ранее импортировал нормально, и пытается импортировать его.
Все еще полностью сбит с толку: ((((