Задавайте вопросы, мы ответим
Вы не зашли.
Работаю через родную консоль mysql. Хочу с помощью LOAD DATA LOCAL INFILE заполнить таблицу из текстового файла, созданного в винде в блокноте. Файл на русском языке.
Все charset'ы mysql переключены на cp1251.
SELECT * из таблицы выдаёт цифры цифрами, а буквы краказябликами.
Также переключал все чарсеты в utf8 и сохранял файл в винде в utf8 - результат тот же.
Единственный ответ для подобной проблемы, найденный в интернете, - так, дескать, "делать не принято".
Может, это действительно нереально?
Неактивен
LOAD DATA INFILE берет значение кодировки почему-то из character_set_database
(логичнее было бы брать из кодировки таблицы, но так уж сделали).
Соответственно,
[celestia] root test > set character_set_database=utf8; Query OK, 0 rows affected (0.00 sec) [celestia] root test > load data infile '/tmp/blah' into table lditest; Query OK, 1 row affected, 1 warning (0.00 sec) Records: 1 Deleted: 0 Skipped: 0 Warnings: 1 [celestia] root test > select * from lditest; +---------------------------------------+ | a | +---------------------------------------+ | Привет, я — русская строка | +---------------------------------------+ 1 row in set (0.00 sec)
Неактивен
paulus написал:
LOAD DATA INFILE берет значение кодировки почему-то из character_set_database
Что-то такое я сегодня осознал, установив SQLyog и поработав в нём. Как бы там ни было, к проблеме это отношения не имеет: у меня все кодировки совпадают.
Такое ощущение, что это сама консоль mysql (командная строка) не может отобразить ни cp1251, ни utf8. Потому что если заполненную таблицу, в которой вроде бы краказяблики, экспортировать назад в винду с помощью SELECT * INTO OUTFILE, то в полученном файле нормальная кириллица.
В SQLyog данные отображаются как нужно.
Неактивен
Ну, консоль лечится или SET NAMES cp866 или chcp 1251
Неактивен