Amazon Redshift에서 특정 테이블을 자동으로 다시 만들어야하는 ETL 프로세스를 구현하려고하는데 이미 해당 테이블 만 삭제할 필요가 있습니다 데이터베이스에 있습니다.테이블이있는 경우 Amazon Redshift에서 테이블을 삭제하는 방법
테이블 존재 여부를 확인할 수있는 테이블 카탈로그가 있습니까? 또는 PSQL의 DROP TABLE IF EXISTS
과 유사한 명령을 사용 하시겠습니까?
Amazon Redshift에서 특정 테이블을 자동으로 다시 만들어야하는 ETL 프로세스를 구현하려고하는데 이미 해당 테이블 만 삭제할 필요가 있습니다 데이터베이스에 있습니다.테이블이있는 경우 Amazon Redshift에서 테이블을 삭제하는 방법
테이블 존재 여부를 확인할 수있는 테이블 카탈로그가 있습니까? 또는 PSQL의 DROP TABLE IF EXISTS
과 유사한 명령을 사용 하시겠습니까?
는 업데이트 : IF 절을 존재합니다
지금 Redshift에는 DROP 표를 지원합니다. Redshift에이 DROP TABLE IF EXISTS
을 지원하지 않았기 때문에 http://docs.aws.amazon.com/redshift/latest/dg/r_DROP_TABLE.html
, 우리는 기존의 테이블 이름을 얻어서을 처리했다.
Redshift에서 테이블 이름을 가져 오려면 pg_table_def
테이블을 사용하고 있습니다. 예를 들어, 다음 sql을 실행하여 시스템 테이블을 제외한 모든 테이블 이름을 가져옵니다.
SELECT
schemaname, tablename
FROM
pg_table_def
WHERE
schemaname <> 'pg_catalog'
AND schemaname <> 'information_schema'
AND schemaname !~ '^pg_toast'
GROUP BY
schemaname,tablename;
다음은 샘플 결과입니다.
schemaname | tablename
------------+-----------
my_schema | access_log
my_schema | error_log
my_schema | vmstats_log
public | users
public | groups
자세한 내용은 다음 링크를 참조하십시오. 대신 테이블을 삭제의에 대해 당신이 삽입 덮어 쓰기 할 방법
?
INSERT OVERWRITE INTO target
SELECT s.* FROM staging s LEFT JOIN target t
ON s.primaryKey = t.primaryKey AND s.distKey = t.distKey
WHERE t.primaryKey IS NULL;
그렇지 않으면 내가하는 일을 왜하고 더 많은 도움으로 업데이트 할 것인지 설명해주십시오. 이것은 적색 변이 디자인으로 보통 당신이 원하는 것을 할 수없는 이유가있는 경우이지만, "적색 변속"방법이 있습니다.
SELECT INTO 문에서이 작업을 수행 할 수있는 방법은 무엇입니까? – DJo
"overwrite"를 쿼리에서 제거하면 "select into" –
어떻게 이것을 'IF'와 결합 할 수 있습니까? RedShift에서는 'IF'가 존재하지 않는 것으로 보입니다. 또는 여러 문장을 실행하는 사용자 정의 스크립트에서이 작업을 수행해야합니까? – Mendhak
이제 Redshift는 내 대답을 업데이트하면서 IF EXISTS 절을 지원합니다. 첫 번째 게시물의 내 의도는 SQL 외부에서 처리하는 것이 었습니다. –