The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Выполнение пакета sql-команд в sh-скриптах"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное / Linux)
Изначальное сообщение [ Отслеживать ]

"Выполнение пакета sql-команд в sh-скриптах"  +/
Сообщение от Raul (ok) on 08-Авг-14, 10:18 
Всем привет.
Я очень начинающий в linux'е, поэтому извиняюсь, если буду выражаться коряво.

Дано:
Нужно сделать скрипт, который подключается к БД, делает оттуда селект, результат селекта кладёт в файл, отключается от БД.

Моё решение - создаю скрипт, в который пишу следующее:
mysql -uUserName -pPassword
use DatabaseName
select a1,a2 from TableName name into outfile /Dir/File;
exit

В итоге при выполнении скрипта получаю строку
mysql>
т.е. отрабатывает только первая строчка скрипта, а дальше ожидается интерактив от меня.
Очевидно, что нужно, чтобы блок, находящийся между входом и выходом из БД выполнялся как команды в БД, а не как строчки скрипта, применимые к ОС.
Подскажите пожалуйста, в какую сторону копать(хотя бы как это в поисковике назвать).

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Выполнение пакета sql-команд в sh-скриптах"  +1 +/
Сообщение от fx (ok) on 08-Авг-14, 10:37 
> Подскажите пожалуйста, в какую сторону копать

man mysql

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Выполнение пакета sql-команд в sh-скриптах"  +/
Сообщение от Raul (ok) on 08-Авг-14, 11:39 
Спасибо большое, Вы мне очень помогли.

P.S. Для тех, кто задастся подобным вопросом решение:
Создаётся скрипт типа
rm -f /tmp/1
mysql -uUserName -pPassword < /dir/BatchFile (скармливаем содержимое файла mysql'ю)

Содержание BatchFile
use DataBaseName;
select ....;
exit;

Сжато, но ёмко можно прочитать вот здесь http://dev.mysql.com/doc/refman/5.5/en/batch-mode.html

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Выполнение пакета sql-команд в sh-скриптах"  +/
Сообщение от Maxim (??) on 08-Авг-14, 11:07 
Я бы сделал средствами mysql:
SELECT * FROM name_table
INTO OUTFILE '/tmp/name_file.csv' FIELDS TERMINATED BY ';' ;

или так:
% mysql -e "SELECT account, shell FROM passwd" -N cookbook > shells.txt

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Выполнение пакета sql-команд в sh-скриптах"  –1 +/
Сообщение от zd3n (ok) on 08-Авг-14, 11:14 
>[оверквотинг удален]
> use DatabaseName
> select a1,a2 from TableName name into outfile /Dir/File;
> exit
> В итоге при выполнении скрипта получаю строку
> mysql>
> т.е. отрабатывает только первая строчка скрипта, а дальше ожидается интерактив от меня.
> Очевидно, что нужно, чтобы блок, находящийся между входом и выходом из БД
> выполнялся как команды в БД, а не как строчки скрипта, применимые
> к ОС.
> Подскажите пожалуйста, в какую сторону копать(хотя бы как это в поисковике назвать).

А если так

mysql -uUserName -pPassword
use DatabaseName
select a1,a2 from TableName name into outfile /Dir/File;
go
exit

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Выполнение пакета sql-команд в sh-скриптах"  +/
Сообщение от Maxim (??) on 08-Авг-14, 11:31 
#!/bin/bash
mysql -uUserName -pPassword -e "select a1,a2 from TableName name ;" -N DatabaseName > /Dir/File
exit
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

6. "Выполнение пакета sql-команд в sh-скриптах"  +/
Сообщение от Raul (ok) on 08-Авг-14, 11:41 
> #!/bin/bash
> mysql -uUserName -pPassword -e "select a1,a2 from TableName name ;" -N DatabaseName
> > /Dir/File
> exit

Всем большое спасибо, Вы меня прямо спасли:)

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Выполнение пакета sql-команд в sh-скриптах"  +/
Сообщение от ShyLion (ok) on 13-Авг-14, 07:39 
> Всем привет.
> Я очень начинающий в linux'е, поэтому извиняюсь, если буду выражаться коряво.
> Дано:
> Нужно сделать скрипт, который подключается к БД, делает оттуда селект, результат селекта
> кладёт в файл, отключается от БД.
> Моё решение - создаю скрипт, в который пишу следующее:
> mysql -uUserName -pPassword
> use DatabaseName
> select a1,a2 from TableName name into outfile /Dir/File;
> exit

man sh

mysql -uUserName -pPassword << EOS
use DatabaseName
select a1,a2 from TableName name into outfile /Dir/File;
EOS

вообще указывать пароль в командной строке несекьюрно, его видно через список процессов.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Выполнение пакета sql-команд в sh-скриптах"  +/
Сообщение от Raul (ok) on 13-Авг-14, 11:14 
> вообще указывать пароль в командной строке несекьюрно, его видно через список процессов.

Да, согласен, но это БД чисто для внутреннего вспомогательного пользования, т.е. в принципе там можно работать вообще без пароля:)


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру