SQL 查询在 shell 脚本中不起作用
SQL Query not working inside a shell script
我真的需要这方面的帮助...
所以我正在编写这个 shell 脚本,它基本上连接到 MySQL 数据库并获取数据并将输出作为 CSV 文件提供。
我可以连接到数据库,也可以通过简单查询“select * from test_table;
”
获取数据
但是当我尝试编写此查询以从脚本中将输出输出为 csv 文件时,出现语法错误。
查询>“select * into outfile '/Path/.cvs' fields terminated by ',' lines terminated by '\n' from test_table;
”
此查询在脚本中不起作用,但它在 MySQL 数据库 (CLI) 中起作用。
真的需要这些家伙的帮助,如果有任何方法可以将输出作为 csv 文件,请告诉我,否则请帮我解决这个问题..
我得到的错误消息是 "ERROR 1064 (42000)" 我知道这是一个语法错误,但它只是在脚本中不起作用,否则我不知道它在 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"
伙计们真的需要帮助
感谢和问候,
萨加尔曼达尔
您可以运行使用以下样式从脚本中进行任何查询
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"
脚本试图将命令构造成SQL_Query。但是,该实现确实考虑了引用规则(您必须转义 ',' 之类的引号)
SQL_Query='select * INTO OUTFILE '/created_files/RESULT3.CSV' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' from test_table;'
对于简单的解决方案,只需将 SQL 内联到 mysql 命令中(为了便于阅读而格式化)。使用此处文档 ('<
mysql ... <<EOF
select * INTO OUTFILE '/created_files/RESULT3.CSV' ...
EOF
我真的需要这方面的帮助... 所以我正在编写这个 shell 脚本,它基本上连接到 MySQL 数据库并获取数据并将输出作为 CSV 文件提供。
我可以连接到数据库,也可以通过简单查询“select * from test_table;
”
但是当我尝试编写此查询以从脚本中将输出输出为 csv 文件时,出现语法错误。
查询>“select * into outfile '/Path/.cvs' fields terminated by ',' lines terminated by '\n' from test_table;
”
此查询在脚本中不起作用,但它在 MySQL 数据库 (CLI) 中起作用。
真的需要这些家伙的帮助,如果有任何方法可以将输出作为 csv 文件,请告诉我,否则请帮我解决这个问题..
我得到的错误消息是 "ERROR 1064 (42000)" 我知道这是一个语法错误,但它只是在脚本中不起作用,否则我不知道它在 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"
伙计们真的需要帮助
感谢和问候, 萨加尔曼达尔
您可以运行使用以下样式从脚本中进行任何查询
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"
脚本试图将命令构造成SQL_Query。但是,该实现确实考虑了引用规则(您必须转义 ',' 之类的引号)
SQL_Query='select * INTO OUTFILE '/created_files/RESULT3.CSV' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' from test_table;'
对于简单的解决方案,只需将 SQL 内联到 mysql 命令中(为了便于阅读而格式化)。使用此处文档 ('<
mysql ... <<EOF
select * INTO OUTFILE '/created_files/RESULT3.CSV' ...
EOF