【发布时间】:2017-08-29 00:34:19
【问题描述】:
我正在尝试连接到 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 时应该有什么不同
【问题讨论】:
-
顶部的最小值/最大值和内部的有什么区别?
-
您是在传递日期以创建日期范围还是其他内容
-
内层帮助定义和查找 StarDateID 和 EndDateID。我正在传递参数,因为有时我必须手动设置日期
标签: sql bash amazon-redshift psql