由于语法不正确,无法 运行 sqlcmd

Not able to run the sqlcmd due to incorrect syntax

我正在尝试 运行 bash 脚本中的 sqlcmd,但是它给出了语法错误,因为它无法转换列 -

sqlcmd -S $DB_HOST  -U $DB_USER -P $DB_PASSWORD -o $mssqlresult -s ","  -W -h -1 -Q "SET NOCOUNT ON SELECT * FROM prod_UDD.prod_UDD_CDD.V_DAILY_CTS_TRX WHERE CAST("/""UTC DATE TIME"/"" AS DATE)='$trade_date';"

出现以下错误

Sqlcmd: 'DATE" "TIME/ AS DATE)='2021-01-31';': Unexpected argument. Enter '-?' for help.

我不知道哪里出了问题。

转义符是\,不是/

像这样重写你的命令:

sqlcmd -S "$DB_HOST" -U "$DB_USER" -P "$DB_PASSWORD" -o "$mssqlresult" -s ","  -W -h -1 -Q "SET NOCOUNT ON SELECT * FROM prod_UDD.prod_UDD_CDD.V_DAILY_CTS_TRX WHERE CAST(\"UTC DATE TIME\" AS DATE)='$trade_date';"

注意 1:我也将您的 shell 变量放在双引号内;不引用 shell 变量 .

注意 2: UTC DATE TIME 周围不应该有反引号而不是双引号吗?我的感觉是 UTC DATE TIME 是列名,不是字符串。如果我是对的,试试这个:

sqlcmd -S "$DB_HOST" -U "$DB_USER" -P "$DB_PASSWORD" -o "$mssqlresult" -s ","  -W -h -1 -Q "SET NOCOUNT ON SELECT * FROM prod_UDD.prod_UDD_CDD.V_DAILY_CTS_TRX WHERE CAST(\`UTC DATE TIME\` AS DATE)='$trade_date';"