SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 14.05.2010 01:30:48

Allfathir Odhinn
Участник
Зарегистрирован: 14.05.2010
Сообщений: 2

LOAD DATA LOCAL INFILE: краказяблики вместо кириллицы

Работаю через родную консоль mysql. Хочу с помощью LOAD DATA LOCAL INFILE заполнить таблицу из текстового файла, созданного в винде в блокноте. Файл на русском языке.
Все charset'ы mysql переключены на cp1251.
SELECT * из таблицы выдаёт цифры цифрами, а буквы краказябликами.
Также переключал все чарсеты в utf8 и сохранял файл в винде в utf8 - результат тот же.

Единственный ответ для подобной проблемы, найденный в интернете, - так, дескать, "делать не принято".
Может, это действительно нереально?

Неактивен

 

#2 14.05.2010 13:38:27

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: LOAD DATA LOCAL INFILE: краказяблики вместо кириллицы

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)

Неактивен

 

#3 14.05.2010 22:07:53

Allfathir Odhinn
Участник
Зарегистрирован: 14.05.2010
Сообщений: 2

Re: LOAD DATA LOCAL INFILE: краказяблики вместо кириллицы

paulus написал:

LOAD DATA INFILE берет значение кодировки почему-то из character_set_database

Что-то такое я сегодня осознал, установив SQLyog и поработав в нём. Как бы там ни было, к проблеме это отношения не имеет: у меня все кодировки совпадают.
Такое ощущение, что это сама консоль mysql (командная строка) не может отобразить ни cp1251, ни utf8. Потому что если заполненную таблицу, в которой вроде бы краказяблики, экспортировать назад в винду с помощью SELECT * INTO OUTFILE, то в полученном файле нормальная кириллица.

В SQLyog данные отображаются как нужно.

Неактивен

 

#4 15.05.2010 00:48:24

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: LOAD DATA LOCAL INFILE: краказяблики вместо кириллицы

Ну, консоль лечится или SET NAMES cp866 или chcp 1251 smile

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson