SQL Запрос не работает внутри сценария оболочки - PullRequest
0 голосов
/ 04 апреля 2020

Мне очень нужна помощь по этому вопросу ... поэтому я пишу сценарий оболочки, который в основном подключается к базе данных MySQL, извлекает данные и выдает выходные данные в виде файла CSV.

I ' Я могу подключиться к базе данных, а также получить данные из простого запроса "select * from test_table;"

, но когда я пытаюсь написать этот запрос, чтобы сделать выходные данные в виде csv-файла из скрипта, он дает синтаксис ошибка.

QUERY> "select * into outfile '/Path/.cvs' fields terminated by ',' lines terminated by '\n' from test_table;"

этот запрос не работает внутри скрипта, но работает в MySQL базе данных (CLI).

Действительно нужно помогите, ребята, если есть какой-нибудь способ сделать вывод в виде csv-файла, скажите мне, иначе вы получите помощь helpme по этому вопросу. ошибка, но она не работает внутри скрипта, в противном случае я не понимаю, как она работает в mysql.

#!/usr/bin/bash

#scirpt to connect with db

master_db_user='root'
master_db_passwd='123'
master_db_port='3306'
master_db_host='localhost'
master_db_name='sagar_tb'


#Preparing script 

SQL_Query='select * INTO OUTFILE '/created_files/RESULT3.CSV' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' from test_table;'

#MySql Command to connect to a database 

mysql -u$master_db_user -p$master_db_passwd -P$master_db_port -h$master_db_host -D$master_db_name <<EOF
$SQL_Query
EOF
echo "End of the Script"

Мне действительно нужна помощь, ребята

спасибо и всего наилучшего, Сагар Мандал

Ответы [ 2 ]

0 голосов
/ 04 апреля 2020

Скрипт пытается построить команду в SQL_Query. Однако реализация учитывает правила цитирования (вы должны избегать кавычек, таких как ',')

SQL_Query='select * INTO OUTFILE '/created_files/RESULT3.CSV' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' from test_table;'

. Для простого решения просто вставьте SQL в команду mysql (отформатировано для удобочитаемости). Использование документа Here ('<<pre>mysql ... <<EOF select * INTO OUTFILE '/created_files/RESULT3.CSV' ... EOF

0 голосов
/ 04 апреля 2020

Вы можете выполнить любой запрос из сценария, используя следующий стиль

myaql -uroot -ppassword -hlocalhost -e 'SELECT * FROM database.table_name';

Я отредактировал свой ответ в соответствии с вашим сценарием

#!/usr/bin/bash

#scirpt to connect with db

master_db_user='root'
master_db_passwd='123'
master_db_port='3306'
master_db_host='localhost'
master_db_name='sagar_tb'


#Preparing script 

SQL_Query='select * INTO OUTFILE '/created_files/RESULT3.CSV' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' from test_table;'

#MySql Command to connect to a database 

mysql -u$master_db_user -p$master_db_passwd -P$master_db_port -h$master_db_host -D$master_db_name -e '$SQL_Query';
echo "End of the Script"
...