将参数传递给 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。以前的答案: