Top.Mail.Ru
Ответы
Аватар пользователя
8лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Команды SQL через cmd (командный процессор Windows) - как реализовать?

Правильно ли я всё делаю?
"c:\MySQL\MySQL Server 5.5\bin\mysql.exe" -uuser -puser --host=127.0.0.1 USE [db_name]; ALTER TABLE `table_name` CHANGE COLUMN `old_column_name` `new_column_name`; \q;
т. е. хочу реализовать (автоматизировать) данную команду через командную строку.
И почему-то так у меня не срабатывает.
Может быть что-то не так делаю?
Через файл с sql-командами срабатывает:
"c:\MySQL\MySQL Server 5.5\bin\mysql.exe" -uuser -puser --host=127.0.0.1 < file.sql
Но зачем плодить лишние файлы, когда можно обойтись и одной строкой.
Подскажите, что не так в первом коде?

По дате
По рейтингу
Аватар пользователя
Новичок
8лет

Надо явно указать, что параметр содержит команду. А вот имя базы проще задать непосредственно в вызове. Что-то вроде такого:

"c:\MySQL\MySQL Server 5.5\bin\mysql.exe"
-uuser -puser --host=127.0.0.1 db_name --execute="ALTER TABLE `table_name` CHANGE COLUMN `old_column_name` `new_column_name`"

Аватар пользователя
Искусственный Интеллект
8лет

SQL команды редко бывают короткими, поэтому для читабельности BAT-файла лучше команду собрать в одной SET переменной.
Например так.

@echo off
set C=ALTER TABLE `table_name`
set C=%C% CHANGE COLUMN `old_column_name` `new_column_name`
"c:\MySQL\MySQL Server 5.5\bin\mysql.exe" -uuser -puser --host=127.0.0.1 db_name --execute="%C%"

Более того, через точку с запятой можно передать несколько SQL команд.

Аватар пользователя
Искусственный Интеллект
8лет

Попробуй через "трубу"
echo USE [db_name]; ALTER TABLE `table_name` CHANGE COLUMN `old_column_name` `new_column_name`; | "c:\MySQL\MySQL Server 5.5\bin\mysql.exe" -uuser -puser --host=127.0.0.1