解决命令行mysql -e 执行长sql没结果
用
mysql -h${HOST_NAME} -P${PORT} -u${USER_NAME} ${DB_NAME} -e”${sql}” 方式来执行sql,发现执行没报错,但没有结果。而这个sql在navicat单独执行是没报错的,并且没有双引号等冲突。
在命令行中执行 SQL 时,如果 SQL 语句格式不正确,尤其是涉及到多行 SQL 语句或特殊字符时,命令行可能无法正确解析。可能的原因和解决办法:
- 分隔符问题:如果
${bigdata_charge_electric_hour}
包含多行或复杂的 SQL 语句,确保它是一个有效的单行语句。如果包含换行符或者特殊字符,命令行工具可能会解释错误。 - 引号问题:如果
${bigdata_charge_electric_hour}
中的 SQL 语句本身包含了引号(例如'
或"
),需要确保它们被正确转义,否则命令行会解析错误。可以使用双引号"
来包装 SQL 查询,或者使用反斜杠转义其中的引号。
解决方法:如果 SQL 语句包含多行或者特殊字符,可以考虑将其写入一个 .sql
文件,并使用 mysql
命令执行文件:
mysql -h${HOST_NAME} -P${PORT} -u${USER_NAME} ${DB_NAME} < your_sql_file.sql
这样可以避免命令行解析时的格式问题。
修改成上面的方式果然执行成功并且有结果了。