2017-04-04 1 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

関連する問題