将参数传递给 psql 命令时出错
Errors while passing parameters into a psql command
我正在尝试连接到 Redshift 集群和 运行 带有参数的 SQL 脚本,但出现错误。
这是 Bash 命令:
psql -v schema="$REDSHIFT_SCHEMA" -h "$REDSHIFT_HOSTNAME" -d "$REDSHIFT_DATABASE" -U "$REDSHIFT_USERNAME" -p "$REDSHIFT_PORT" -f "nulltest.sql" -v inputStartDateId=20170318 -v inputEndDateId=20170404
而nulltest.sql
的内容是:
select
COALESCE( $inputStartDateId, min(StartDateID)),
COALESCE( $inputEndDateId, max(EndDateID))
from (
select
row_number()over(order by FiscalWeekID desc) as rownum,
FiscalWeekID,
min(dateid)StartDateID
,max(dateid)EndDateID
from
dm.dim_Time
where DateKey < getdate()
group by FiscalWeekID
) a
where rownum <= 3
我得到的错误是:
psql:nulltest.sql:15: ERROR: syntax error at or near "$"
LINE 2: COALESCE( $inputStartDateId, max(StartDateID))
我在 SQL 脚本中是否错误地调用了参数?当我在 运行 时将值传递给参数时,SQL 运行 通过 Aginity 非常好。虽然
通过 psql
命令调用 SQL 时我不确定应该有什么不同
您在命令行上正确传递了参数,但是您的 nulltest.sql 文件应该使用 :inputStartDateId
或 :'inputStartDateId'
而不是 $inputStartDateId
。以前的答案:。
我正在尝试连接到 Redshift 集群和 运行 带有参数的 SQL 脚本,但出现错误。
这是 Bash 命令:
psql -v schema="$REDSHIFT_SCHEMA" -h "$REDSHIFT_HOSTNAME" -d "$REDSHIFT_DATABASE" -U "$REDSHIFT_USERNAME" -p "$REDSHIFT_PORT" -f "nulltest.sql" -v inputStartDateId=20170318 -v inputEndDateId=20170404
而nulltest.sql
的内容是:
select
COALESCE( $inputStartDateId, min(StartDateID)),
COALESCE( $inputEndDateId, max(EndDateID))
from (
select
row_number()over(order by FiscalWeekID desc) as rownum,
FiscalWeekID,
min(dateid)StartDateID
,max(dateid)EndDateID
from
dm.dim_Time
where DateKey < getdate()
group by FiscalWeekID
) a
where rownum <= 3
我得到的错误是:
psql:nulltest.sql:15: ERROR: syntax error at or near "$"
LINE 2: COALESCE( $inputStartDateId, max(StartDateID))
我在 SQL 脚本中是否错误地调用了参数?当我在 运行 时将值传递给参数时,SQL 运行 通过 Aginity 非常好。虽然
通过psql
命令调用 SQL 时我不确定应该有什么不同
您在命令行上正确传递了参数,但是您的 nulltest.sql 文件应该使用 :inputStartDateId
或 :'inputStartDateId'
而不是 $inputStartDateId
。以前的答案: