2017-04-04 9 views
0

Redshift 클러스터에 연결하고 매개 변수가있는 SQL 스크립트를 실행하려고하는데 오류가 발생합니다. 내가 갖는 오류는psql 명령에 매개 변수를 전달하는 중 오류가 발생했습니다.

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 -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의 내용입니다

psql:nulltest.sql:15: ERROR: syntax error at or near "$" 
LINE 2: COALESCE($inputStartDateId, max(StartDateID)) 

나는 매개 변수를 호출 오전 SQL 스크립트에서 잘못? SQL은 런타임에 값을 매개 변수에 전달할 때 Aginity를 통해 완벽하게 실행됩니다. 나는 당신이 명령 줄에서 제대로 매개 변수를 전달하는

+0

상단 최소/최대와 내부 최대의 차이점은 무엇입니까? – maSTAShuFu

+0

날짜를 전달하여 날짜 범위 또는 기타 항목을 만들었습니까? – maSTAShuFu

+0

내부 ID는 StarDateID 및 EndDateID를 정의하고 찾는 데 도움이됩니다. 때로는 수동으로 날짜를 설정해야하기 때문에 매개 변수를 전달합니다. – simplycoding

답변

1

불구하고 psql 명령을 통해 SQL을 호출 할 때 다른해야하는데 모르겠어요,하지만 nulltest.sql 파일 :inputStartDateId 또는 :'inputStartDateId' 대신 $inputStartDateId 사용해야합니다. 이전 대답 : https://stackoverflow.com/a/30850125/6650678.

관련 문제