Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在shell脚本中执行mysql查询_Mysql_Sql_Linux_Bash_Shell - Fatal编程技术网

在shell脚本中执行mysql查询

在shell脚本中执行mysql查询,mysql,sql,linux,bash,shell,Mysql,Sql,Linux,Bash,Shell,假设我有两个数据库nm和nm_历史。我需要从两个数据库中获取记录。如果我在mysql中执行查询,它就可以正常工作。但如果我在bin/bash中执行该查询,它将返回以下错误 ** ** 以下是脚本: mysql -uUser -pPassword -hHostDB -e 查询: SELECT S.`a_party`, S.`prov_channel`, S.`created` AS Created,M.`created` AS terminate FROM nm.`subscriber_1` S

假设我有两个数据库nm和nm_历史。我需要从两个数据库中获取记录。如果我在mysql中执行查询,它就可以正常工作。但如果我在bin/bash中执行该查询,它将返回以下错误

**

**

以下是脚本:

mysql -uUser -pPassword -hHostDB -e
查询:

SELECT S.`a_party`, S.`prov_channel`, S.`created` AS Created,M.`created` AS terminate FROM nm.`subscriber_1` S INNER JOIN nm_history.`svc_mgmt_06` M ON S.`a_party` = M.`msisdn` 
WHERE M.`action_type`=2;**

-e参数需要一个内联参数,如下所示:

mysql -uUSER -pPASS -hHOST -e "SELECT * FROM db.table;"

您应该在shell脚本中编写查询字符串,而不使用倒钩(`):


我遇到了完全相同的问题,解决的办法是将双引号改为单引号

像这样:

alexander@linux:~> mysql -u alexmack -pXXXXXXX -D eliminacion -e "SELECT `NOMBRE`,`FECHA_TERMINO`, DATE_ADD(`FECHA_TERMINO`, INTERVAL 1 DAY) 'FECHA_BLOQUEO',DATE_ADD(`FECHA_TERMINO`, INTERVAL 10 DAY) 'FECHA_BORRADO' FROM `excolaboradores` WHERE ESTADO = 'habilitado';"
NOMBRE: orden no encontrada
FECHA_TERMINO: orden no encontrada
FECHA_TERMINO: orden no encontrada
FECHA_TERMINO: orden no encontrada
excolaboradores: orden no encontrada
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ', DATE_ADD(, INTERVAL 1 DAY) 'FECHA_BLOQUEO',DATE_ADD(, INTERVAL 10 DAY) 'FECHA_' at line 1
alexander@linux:~> mysql -u alexmack -pXXXXXXX -D eliminacion -e 'SELECT `NOMBRE`,`FECHA_TERMINO`, DATE_ADD(`FECHA_TERMINO`, INTERVAL 1 DAY) 'FECHA_BLOQUEO',DATE_ADD(`FECHA_TERMINO`, INTERVAL 10 DAY) 'FECHA_BORRADO' FROM `excolaboradores` WHERE ESTADO = "habilitado";'
+---------+---------------+---------------+---------------+
| NOMBRE  | FECHA_TERMINO | FECHA_BLOQUEO | FECHA_BORRADO |
+---------+---------------+---------------+---------------+
| test001 | 2020-06-15    | 2020-06-16    | 2020-06-25    |
| test002 | 2020-06-18    | 2020-06-19    | 2020-06-28    |
| test003 | 2020-06-20    | 2020-06-21    | 2020-06-30    |
+---------+---------------+---------------+---------------+


如何在-e参数中使用环境变量?
mysql -uUser -pPassword -hHostDB -e"SELECT S.a_party, S.prov_channel, S.created AS Created,M.created AS terminate 
FROM nm.subscriber_1 S 
INNER JOIN nm_history.svc_mgmt_06 M ON S.a_party = M.msisdn
WHERE M.action_type=2"
alexander@linux:~> mysql -u alexmack -pXXXXXXX -D eliminacion -e "SELECT `NOMBRE`,`FECHA_TERMINO`, DATE_ADD(`FECHA_TERMINO`, INTERVAL 1 DAY) 'FECHA_BLOQUEO',DATE_ADD(`FECHA_TERMINO`, INTERVAL 10 DAY) 'FECHA_BORRADO' FROM `excolaboradores` WHERE ESTADO = 'habilitado';"
NOMBRE: orden no encontrada
FECHA_TERMINO: orden no encontrada
FECHA_TERMINO: orden no encontrada
FECHA_TERMINO: orden no encontrada
excolaboradores: orden no encontrada
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ', DATE_ADD(, INTERVAL 1 DAY) 'FECHA_BLOQUEO',DATE_ADD(, INTERVAL 10 DAY) 'FECHA_' at line 1
alexander@linux:~> mysql -u alexmack -pXXXXXXX -D eliminacion -e 'SELECT `NOMBRE`,`FECHA_TERMINO`, DATE_ADD(`FECHA_TERMINO`, INTERVAL 1 DAY) 'FECHA_BLOQUEO',DATE_ADD(`FECHA_TERMINO`, INTERVAL 10 DAY) 'FECHA_BORRADO' FROM `excolaboradores` WHERE ESTADO = "habilitado";'
+---------+---------------+---------------+---------------+
| NOMBRE  | FECHA_TERMINO | FECHA_BLOQUEO | FECHA_BORRADO |
+---------+---------------+---------------+---------------+
| test001 | 2020-06-15    | 2020-06-16    | 2020-06-25    |
| test002 | 2020-06-18    | 2020-06-19    | 2020-06-28    |
| test003 | 2020-06-20    | 2020-06-21    | 2020-06-30    |
+---------+---------------+---------------+---------------+