如何从bash shell运行Mysql查询?

问题描述 投票:2回答:1

对不起,如果问题措辞严厉,基本上我正在尝试做这样的事情

mysql --user user --p password database -e "    SELECT *  FROM 
`wp_postmeta` WHERE `meta_key` LIKE '_sku' AND `meta_value` = '';" | awk ' { print $2 } ' > post_id_data.txt

然而,当我运行这种代码风格时,我得到错误,我不知道为什么,因为mysql语句直接来自phpmyadmin,并且当我连接到mariadb数据库时工作。我试图删除一些后面的刻度,以便它们更像是''而不是显示什么但仍然没有运气反而我得到这个错误

第1行的错误1064(42000):SQL语法中有错误;检查与您的MariaDB服务器版本对应的手册,以便在''wp_postmeta'附近使用正确的语法。在第1行'meta_key'ELKE'_sku'和'meta_value'='''

我尝试过的另一个代码示例如下所示。

#!/bin/bash
MYSQLUSER="user"
MYSQLPASS="password"
database="wordpress"




#mysql options to be parsed 
MYSQLOPTS="--user=${MYSQLUSER} --password=${MYSQLPASS} ${database}"

mysql ${MYSQLOPTS} << EOFMYSQL
SELECT *  FROM `wp_postmeta` WHERE `meta_key` LIKE '_sku' AND `meta_value` = '';
EOFMYSQL

我也试过了

root@3e0a62b6b42c:/# mysql --user=user--password=passowrd wordpress -e 
"SELECT *  FROM 'wp_postmeta' WHERE 'meta_key' LIKE '_sku' AND 
'meta_value' = '';"

第1行的错误1064(42000):SQL语法中有错误;检查与您的MariaDB服务器版本对应的手册,以便在''wp_postmeta'附近使用正确的语法。在第1行'meta_key'ELKE'_sku'和'meta_value'='''

请注意,我是Mysql的新手,所以任何对我可以做的事情的好学习材料的参考都非常感谢

mysql bash
1个回答
2
投票

删除分号和列/表名称周围的引号。

当您使用分号终止查询时,mysql工具会爆炸。 如果需要,可以使用反引号来引用实体名称,而不是引号。

试试这个:

"SELECT * FROM wp_postmeta WHERE meta_key LIKE '_sku' AND meta_value = ''"
© www.soinside.com 2019 - 2024. All rights reserved.