Задавайте вопросы, мы ответим
Вы не зашли.
Уважаемые коллеги, для удобства администрирования БД ( так как не все пользователи БД владеют навыками работы с MySQL ) , переписал ряд рутинных моментов, выполняемых ежедневно в .bat файл. Но возникли некоторые трудности с реализацией запроса .
Неактивен
Насколько я помню виндоус, там можно к батнику сделать lnk, в котором можно
поставить галочку «не закрывать окно». Ну или не изобретать сложных путей,
а запустить батник из уже открытого окна (и оно тогда не закроется).
Что касается ошибки глобально — всегда можно сделать mysql < load_file.sql,
а в файле уже написать команды. Там уже никакой экранировки делать не нужно
Неактивен
Уважаемые коллеги, поздравляю ВАС с наступившим НОВЫМ ГОДОМ !!!
Возникли некоторые вопросы и непонятки по работе .
Есть БД.
Отредактированно Twix (01.01.2011 23:54:21)
Неактивен
Попробуйте прописать SET NAMES в файле, который загружаете. Скорее всего,
кодировка, которая прописана в файле, не совпадает с кодировкой, которую
ожидает MySQL.
Неактивен
Попробывал переписал запрос
Неактивен
Кажется, тут Вы уже просто напутали в синтаксисе.
SET `id` = NULL, `Кокиль` = @var1, ...
Но только я бы вообще всё переписал — зачем присваивать переменным, если
можно сразу записывать в столбцы? Должно хватить простого
LOAD DATA INFILE ... (`Кокиль`, `Дефект`, ...);
Неактивен
paulus написал:
Кажется, тут Вы уже просто напутали в синтаксисе.
SET `id` = NULL, `Кокиль` = @var1, ...
Да-да поправил код.
Неактивен
Вот изначальное мне нравится куда больше. Проблемы не в этом, проблемы
в том, что в виндоус проблемы с путями
В частности, когда Вы пишете c:\load — \l интерпретируется как команда.
Аналогично с c:\214. Попробуйте использовать прямые слеши, иногда это
работает. Иначе — экспериментируйте с нужным количеством экранировок
слешей.
И SET NAMES в файл .sql таки допишите.
Неактивен
К сожалению эксперименты со слешами не привели к желаемому результату ?!
Немного покапавшись, пришёл к пониманию вопроса - проблема не с путями в Винде, а всё же с кодировкой . ( мне так показалось , переместил файл на сервер ,изменил содержание команды на LOAD DATA INFILE '214.txt'
INTO TABLE `temp_214`
.... т.е. исключил влияние слэшей)
Изменил содержание файла , в котором прописан перечень команд к исполнению и он отрабатывается на ура +)), как из командной строки посредсвом mysql -u root -p******* -t -vvv < C:\data.sql , так и посредством source C:\data.sql
Может быть попробывать периписать названия столбцов в таблицах на англицкий лад ???
Или что то делать с кодировкой ???
Али что ещё ???
Теряюсь в догадках ... млять.
Отредактированно Twix (04.01.2011 22:32:59)
Неактивен
В data.sql у Вас только запросы, в которых не хватает пробелов
Впрочем, LOAD DATA INFILE среди них нету, так что, видимо, это не тот файл.
Проблемы с кодировкой лечатся путем дописывания строки SET NAMES в файл,
в котором вызывается LOAD DATA INFILE.
Неактивен
paulus написал:
В data.sql у Вас только запросы, в которых не хватает пробелов
Впрочем, LOAD DATA INFILE среди них нету, так что, видимо, это не тот файл.
Проблемы с кодировкой лечатся путем дописывания строки SET NAMES в файл,
в котором вызывается LOAD DATA INFILE.
В data.sql преднамеренно убрал LOAD DATA INFILE, для проверки mysql -u root -p******* -t -vvv < C:\data.sql и source C:\data.sql ( чтобы исключить влияние слэшей и прочих проблем с путями в винде).
Отредактировал содержанрие файла с запросами ( см.приложение ). Вводя в консоль содержимое файла , все запросы отрабатываются на 5+, а вот посредством mysql> source C:\load_data.sql;
опять получаю сообщения об ошибке ??? следующего содержания
ERROR:
Unknown command '\l'.
Database changed
Query OK, 0 rows affected (0.00 sec)
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
` , `└тЄюЁ`, `╤ЄхЁцхэ№`)
set `id`= null' at line 10
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
` , `└тЄюЁ`, `╤ЄхЁцхэ№`)
set `id`= null' at line 10
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
` , `└тЄюЁ`, `╤ЄхЁцхэ№`)
set `id`= null' at line 10
Empty set (0.00 sec)
Empty set (0.00 sec)
Empty set (0.00 sec)
Empty set (0.00 sec)
Query OK, 1 row affected (0.05 sec)
Query OK, 1 row affected (0.05 sec)
Query OK, 1 row affected (0.03 sec)
Query OK, 1 row affected (0.03 sec)
Query OK, 1 row affected (0.03 sec)
Query OK, 1 row affected (0.03 sec)
Query OK, 1 row affected (0.06 sec)
???????
Отредактированно Twix (07.01.2011 00:41:14)
Неактивен
Всё же не даёт покоя не решённый вопрос.
Поправил содержание файла с данными ( откуда происходит закачка данных в БД , первоначально там присутствовали англицкие символы !!!, а должны быть только русские)
Неактивен
Хм. Файлик, вроде, правильный. Единственное, что приходит в голову: SET NAMES
меняет не все переменные кодировок. Попробуйте тогда сменить все сопоставления.
Кажется, что это ошибка клиента, но лучше проверить окончательно.
SET character_set_filesystem = cp1251;
SET character_set_database = cp1251;
SET character_set_server = cp1251;
Если не поможет — хороший повод написать ошибку на bugs.mysql.com.
Неактивен
Тут вот давеча сделал запрос
Отредактированно Twix (07.01.2011 20:53:19)
Неактивен
Поправил содержание файла load_data.sql вписал
Отредактированно Twix (07.01.2011 21:05:40)
Неактивен
Может попробывать переустановить программу ???
Неактивен
Есть пару моментов:
1. данные в базе в кодировке cp1251
2. консоль работает в кодировке cp866
перевидите консоль в винде при помощи команды
chcp 1251
или в начале батника поставьте
Отредактированно Tsvetkov (08.01.2011 04:41:20)
Неактивен
Tsvetkov написал:
Есть пару моментов:
1. данные в базе в кодировке cp1251
2. консоль работает в кодировке cp866
перевидите консоль в винде при помощи команды
chcp 1251
или в начале батника поставьте
Спасибо за желание помочь, но всё же проблема немного не в этом.
Неактивен
Сегодня переустановил сервер , поставил 5.1. ( в надежде на "излечение" ).
Неактивен
Погодите, последнюю проблему Вы же уже полечили добавлением кодировок?
Что касается кракозябл — убедитесь, что в файле с данными данные лежат
действительно в cp1251.
Неактивен
Идем на Универсальный декодер кириллицы и преобразуем следующее:
1. 4╧6
Ставим
1.1 Расширенный режим: исходная кодировка: cp1251
1.2 отображается как: ibm866 ( = cp866)
1.3 жмем ОК - получаем ответ - 4П6
2. ╨Ъ╨╛╨║╨╕╨╗╤М
Ставим
2.1 Расширенный режим: исходная кодировка: utf-8
2.2 отображается как: ibm866 ( = cp866)
2.3 жмем ОК - получаем ответ - Кокиль
Из этого делаем вывод, что у Вас полный разброд в кодировках.
по 1 случаю - команда - chcp 1251 - сразу после запуска консоли, до запуска клиента mysql.exe
по 2 случаю - сохранить load_data.sql в блокноте как ANSI Cyrillic
ps
то , что названия столбцов правильно отображаются при :
mysql> select*from `temp_214`;
+----+---------------------+--------+--------+---------+-------+----------+
| id | Дата | Кокиль | Дефект | Локация | Автор | Стержень |
это значит , что cp866 символы имен столбцов лежат в таблице с cp1251 кодировкой.
Отредактированно Tsvetkov (09.01.2011 03:25:37)
Неактивен
paulus написал:
Погодите, последнюю проблему Вы же уже полечили добавлением кодировок?
Да-да (см. вложение)
Неактивен
paulus написал:
Что касается кракозябл — убедитесь, что в файле с данными данные лежат
действительно в cp1251.
На всякий случай перекодировал файл 214.txt и load_data , как 1251 ANSI Кириллица, однако результата нет.
Отредактированно Twix (09.01.2011 15:32:07)
Неактивен
По-моему, мы решаем какую-то другую проблему
Можете приложить кусок данных, который не загружается,
сценарий для создания таблицы (структуру) и сценарий для
загрузки? Я тоже попробую это сделать
Неактивен
Ок !!!
БД во вложении.
Отредактированно Twix (10.01.2011 17:33:20)
Неактивен