


Команды 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
Но зачем плодить лишние файлы, когда можно обойтись и одной строкой.
Подскажите, что не так в первом коде?
Надо явно указать, что параметр содержит команду. А вот имя базы проще задать непосредственно в вызове. Что-то вроде такого:
"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`"
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 команд.
Попробуй через "трубу"
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