IZONE - http://www.izcity.com/ - бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

Как запустить SQL запрос к MySQL из batch файла?

В статье описана работа с MySQL монитором  на примере изменения поля таблицы

Задача

 есть таблица altertest в базе данных test со следующей структурой:

(at_id int not null,
at_ab varchar(255),
at_email varchar(255)
);
нужно сделать так чтобы  поле at_id каждый раз увеличивалось на 1 при добавлении новой записи в таблицу. (другими словами стало автоинкрементным) .

Примечание 

Для тестирования SQL запросов вы можете создать файл с именем "1.sql" , и запускать его 

с помощью программы mysql.exe (mysql монитор) командой

mysql --database test --execute "\. 1.sql"   

например из под FAR  , для Windows клиента, или прямо из под вашего SHELL  . Естественно если вы подключаетесь к удаленному (а не localhost) серверу вам следует использовать ключи командной строки mysql.exe отвечающие за подключение 

Например так : mysql --user=softm --password=35arsen --host=192.168.11.2 --database test --execute "\. 1.sql"

 

Решение 

Примените SQL запрос : ALTER TABLE


#-----Файл 1.sql-----
#Убить таблицу если существовала 
drop TABLE IF EXISTS altertest;

#Создаем таблицу
CREATE TABLE altertest
(at_id int not null,
at_ab varchar(255),
at_email varchar(255)
);

#Добавить записи в таблицу
insert into altertest (at_ab,at_email) values ("about 1","no@mail.ru");
insert into altertest (at_ab,at_email) values ("about 2","no@mail.ru");

#Вывести записи из таблицы
select * from altertest;
#-----Конец файла 1.sql-----

Итак для создания таблицы и ее тестирования mysql --database test --execute "\. 1.sql" 

Получаем на выходе :

at_id at_ab at_email
0 about 1 no@mail.ru
0 about 2 no@mail.ru

Для изменения таблицы выполняем  команду 

ALTER TABLE altertest MODIFY at_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT; 

занесем ее в файл 2.sql после создания таблицы но перед вставкой в нее новых элементов:

#-----Файл 2.sql-----
#пытаемся изменить таблицу
ALTER TABLE altertest MODIFY at_id INT NOT NULL PRIMARY KEY AUTO_INCREMENT; 

#Добавить записи в таблицу
insert into altertest (at_ab,at_email) values ("about 1","no@mail.ru");
insert into altertest (at_ab,at_email) values ("about 2","no@mail.ru");

#Вывести записи из таблицы
select * from altertest;
#-----Конец файла 2.sql-----

Результат вывода будет выглядеть вот так

at_id at_ab at_email
1 about 1 no@mail.ru
2 about 2 no@mail.ru
3 about 1 no@mail.ru
4 about 2 no@mail.ru

То есть наш запрос успешно работает .

Послесловие :

Как видите с базой данных MySQL можно успешно работать из batch файлов и shell скриптов , что делает ее необічайно гибкой в использовании.

 

Ссылки :

1. Все материалы по MySQL на нашем сайте Перейти >>>

С уважением Арсен Кириллов г.Львов 2001 г. softm@ukr.net

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com