Всем привет.
Я очень начинающий в linux'е, поэтому извиняюсь, если буду выражаться коряво.Дано:
Нужно сделать скрипт, который подключается к БД, делает оттуда селект, результат селекта кладёт в файл, отключается от БД.Моё решение - создаю скрипт, в который пишу следующее:
mysql -uUserName -pPassword
use DatabaseName
select a1,a2 from TableName name into outfile /Dir/File;
exitВ итоге при выполнении скрипта получаю строку
mysql>
т.е. отрабатывает только первая строчка скрипта, а дальше ожидается интерактив от меня.
Очевидно, что нужно, чтобы блок, находящийся между входом и выходом из БД выполнялся как команды в БД, а не как строчки скрипта, применимые к ОС.
Подскажите пожалуйста, в какую сторону копать(хотя бы как это в поисковике назвать).
> Подскажите пожалуйста, в какую сторону копатьman mysql
Спасибо большое, Вы мне очень помогли.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
Я бы сделал средствами 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
>[оверквотинг удален]
> 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
#!/bin/bash
mysql -uUserName -pPassword -e "select a1,a2 from TableName name ;" -N DatabaseName > /Dir/File
exit
> #!/bin/bash
> mysql -uUserName -pPassword -e "select a1,a2 from TableName name ;" -N DatabaseName
> > /Dir/File
> exitВсем большое спасибо, Вы меня прямо спасли:)
> Всем привет.
> Я очень начинающий в linux'е, поэтому извиняюсь, если буду выражаться коряво.
> Дано:
> Нужно сделать скрипт, который подключается к БД, делает оттуда селект, результат селекта
> кладёт в файл, отключается от БД.
> Моё решение - создаю скрипт, в который пишу следующее:
> mysql -uUserName -pPassword
> use DatabaseName
> select a1,a2 from TableName name into outfile /Dir/File;
> exitman sh
mysql -uUserName -pPassword << EOS
use DatabaseName
select a1,a2 from TableName name into outfile /Dir/File;
EOSвообще указывать пароль в командной строке несекьюрно, его видно через список процессов.
> вообще указывать пароль в командной строке несекьюрно, его видно через список процессов.Да, согласен, но это БД чисто для внутреннего вспомогательного пользования, т.е. в принципе там можно работать вообще без пароля:)