2017-04-04 40 views
0

我試圖連接到Redshift集羣並運行帶有參數的SQL腳本,但出現錯誤。將參數傳遞到psql命令時出錯

下面是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運行得非常好。我不知道什麼是應該通過雖然

+0

頂部最小/最大和內部之間有什麼區別? – maSTAShuFu

+0

您是否在傳遞日期以創建日期範圍或其他內容 – maSTAShuFu

+0

內部幫助定義並查找StarDateID和EndDateID。我傳入參數,因爲有時我必須手動設置日期 – simplycoding

回答

1

你正確地傳遞你的參數在命令行上的psql命令調用SQL時是不同的,但你的nulltest.sql文件應該使用:inputStartDateId:'inputStartDateId'代替$inputStartDateId。以前的回答:https://stackoverflow.com/a/30850125/6650678