【问题标题】:SQL Query not working inside a shell scriptSQL 查询在 shell 脚本中不起作用
【发布时间】:2020-04-04 05:20:31
【问题描述】:

我真的需要这方面的帮助... 所以我正在编写这个 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"

这里真的需要帮助

感谢和问候, 萨加尔曼陀罗

【问题讨论】:

  • 考虑分享您的脚本。
  • 从您执行脚本的文件夹中是否有相对路径文件夹
  • @dassum 我也附上了脚本,请看一下
  • @dash-o 我现在也附上了我的脚本,请看一下

标签: mysql sql shell scripting sh


【解决方案1】:

脚本尝试将命令构造到 SQL_Query 中。但是,实现确实考虑到了引用规则(您必须转义像 ',' 这样的引号)

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

对于简单的解决方案,只需将 SQL 内联到 mysql 命令中(为便于阅读而格式化)。使用 Here 文档 ('

mysql ... <<EOF
select * INTO OUTFILE '/created_files/RESULT3.CSV' ...
EOF

【讨论】:

  • 你能多分享一点吗?我没明白你的意思……我没明白你的EOF部分。请好友在这方面需要帮助
  • 您在当前脚本中有
  • 所以我应该删除我的第一个 EOF 并使用凭据添加我的查询
  • 我也尝试只创建文本文件,但仍然给我同样的错误
【解决方案2】:

您可以使用以下样式从脚本运行任何查询

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"

【讨论】:

  • #!/usr/bin/bash #scirpt 连接 db master_db_user='root' master_db_passwd='123' master_db_port='3306' master_db_host='localhost' master_db_name='sagar_tb' mysql -u $master_db_user -p$master_db_passwd -P$master_db_port -h$master_db_host -D$master_db_name select * INTO OUTFILE '/created_files/RESULT3.CSV' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' from test_table;
  • 嘿伙计,我试过你的方法,但仍然显示上述错误
猜你喜欢
  • 2013-11-01
  • 2017-06-21
  • 2013-12-03
  • 2020-06-24
  • 2015-01-07
  • 2018-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多