mysql - SQL 查询在 shell 脚本中不起作用
问题描述
我真的需要这方面的帮助......所以我正在编写这个 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"
在这里真的需要帮助
谢谢和问候, Sagar Mandal
解决方案
您可以使用以下样式从脚本运行任何查询
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"
推荐阅读
- javascript - 通过我的 chrome 扩展程序显示 youtube IFRAME 时出现内容安全策略错误
- java - 比较 Java 中的地理位置点
- linux - 如何将 Linux 移植到带有 Kendryte K210 内核的 MAIXDUINO 板上?
- c# - 按空字符串搜索列不起作用
- angular - 在运行时读取 Angular 中的服务器环境变量
- sql - SQL Server 多租户数据库分区与索引
- css - 如何在多行 React Native TextInput 的开头添加默认文本
- vue.js - 使用 Apollo + Vue 进行异步调用
- javascript - 给出错误输入时,jQuery自动完成ajax无法用于自动更正
- mysql - 在开始新的更改操作之前缺少逗号。(靠近位置 68 的“BY”)和无法识别的更改操作。(靠近位置 68 的“BY”)