Google Cloud Storage 스테이지에서 데이터 복사
Google Cloud Storage 스테이지에서 데이터 복사
스테이징된 파일의 데이터를 대상 테이블에 로드해요.
출처: Documentation
본문
데이터 로드
COPY INTO <table>를 실행해 데이터를 대상 테이블에 로드해요.
참고 — 데이터를 로드하려면 웨어하우스가 필요해요. 자동 재개(auto resume)로 구성되지 않은 웨어하우스를 사용하는 경우 ALTER WAREHOUSE를 실행해 웨어하우스를 재개해요. 웨어하우스 시작에는 최대 5분이 걸릴 수 있다는 점에 주의해요.
ALTER WAREHOUSE mywarehouse RESUME;
중요 — 외부 스테이지에 대해 반환된 객체 목록에는 "디렉터리 blob"이 하나 이상 포함될 수 있어요. 기본적으로 슬래시 문자(
/)로 끝나는 경로를 말해요. 예:LIST @my_gcs_stage; +---------------------------------------+------+----------------------------------+-------------------------------+ | name | size | md5 | last_modified | |---------------------------------------+------+----------------------------------+-------------------------------| | my_gcs_stage/load/ | 12 | 12348f18bcb35e7b6b628ca12345678c | Mon, 11 Sep 2019 16:57:43 GMT | | my_gcs_stage/load/data_0_0_0.csv.gz | 147 | 9765daba007a643bdff4eae10d43218y | Mon, 11 Sep 2019 18:13:07 GMT | +---------------------------------------+------+----------------------------------+-------------------------------+이러한 blob은 Google Cloud 콘솔에서 디렉터리를 만들 때(Google이 제공하는 다른 도구를 사용하는 대신) 나열돼요.
객체 목록에 디렉터리 blob이 포함되면 스테이지를 참조하는 COPY 문이 실패할 수 있어요. 오류를 피하려면 스테이지의 파일 목록에 디렉터리 blob이 포함될 때 포함할 파일을 식별하는 데 파일 패턴 일치(즉, PATTERN 절)를 사용하는 것을 권장해요. 예는 (이 주제의) 패턴 일치를 사용해 데이터 로드를 참고해요. 또는 COPY 문에서 ON_ERROR = SKIP_FILE을 설정해요.
패턴 일치를 사용해 데이터 로드
다음 예제는 Google Cloud Storage용 통합 구성에서 만든 my_gcs_stage라는 이름의 스테이지의 파일에서 데이터를 로드해요. 패턴 일치를 사용하므로 이 문은 이름이 sales 문자열로 시작하는 파일만 로드해요.
COPY INTO mytable
FROM @my_gcs_stage
PATTERN='.*sales.*.csv';
스테이지 정의에 이름이 있는 파일 형식이 포함되어 있으므로 파일 형식 옵션은 지정하지 않는다는 점에 주의해요.
경로 / 접두사를 사용해 데이터 로드
다음 예제는 데이터 로드 준비에서 만든 my_csv_format이라는 이름의 파일 형식을 사용해 Cloud Storage 버킷의 data/files 경로(즉, 접두사)가 있는 모든 파일을 로드해요. 경로를 패턴 일치와 결합할 수 있다는 점에 주의해요.
COPY INTO mytable
FROM @my_gcs_stage/mybucket/data/files
FILE_FORMAT = (FORMAT_NAME = my_csv_format);
임시(ad hoc) 파일 형식 옵션을 사용해 데이터 로드
다음 임시 예제는 Cloud Storage 버킷의 모든 파일에서 데이터를 로드해요. COPY 명령은 이름이 있는 파일 형식을 참조하는 대신 파일 형식 옵션을 지정해요. 이 예제는 파이프(|) 필드 구분 기호가 있는 CSV 파일을 로드해요. COPY 명령은 데이터 파일의 첫 줄을 건너뜁니다.
임시 데이터 로드, 즉 COPY 문이 스테이지를 참조하지 않을 때는 스토리지 통합 참조가 필요하다는 점에 주의해요.
COPY INTO mytable
FROM 'gcs://mybucket/data/files'
STORAGE_INTEGRATION = myint
FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = '|' SKIP_HEADER = 1);
데이터 검증
데이터를 로드하기 전에 업로드된 파일의 데이터가 올바르게 로드될지 검증할 수 있어요.
업로드된 파일의 데이터를 검증하려면 VALIDATION_MODE 매개 변수로 COPY INTO <table>을 검증 모드로 실행해요. VALIDATION_MODE 매개 변수는 파일에서 마주친 오류를 반환해요. 그런 다음 파일의 데이터를 수정해 오류 없이 로드되도록 할 수 있어요.
또한 COPY INTO <table>은 로드 중 파일에서 오류가 발생할 때 수행할 작업을 지정하는 ON_ERROR 복사 옵션을 제공해요.
데이터 로드 모니터링
Snowflake는 이전 14일 내에 실행된 COPY INTO 명령에 대한 이력 데이터를 보존해요. 이 메타데이터를 사용해 업로드 완료 후 파일 삭제를 포함해 로드 프로세스를 모니터링하고 관리할 수 있어요.
- Snowsight의 Query History 페이지에서 각 COPY INTO <table> 명령의 상태를 모니터링해요.
- LOAD_HISTORY 정보 스키마 뷰를 사용해 COPY INTO 명령으로 테이블에 로드된 데이터의 기록을 검색해요.
한 스테이지에서 다른 스테이지로 파일 복사
COPY FILES 명령을 사용해 파일을 한 이름이 있는 스테이지에서 다른 스테이지로 복사해 데이터를 한 위치에 정리해요.
다음 예제는 원본 스테이지(src_stage)의 모든 파일을 대상 스테이지(trg_stage)로 복사해요.
COPY FILES
INTO @trg_stage
FROM @src_stage;
복사할 파일 이름 목록을 지정하거나 패턴 일치를 사용해 파일을 복사할 수도 있어요. 자세한 내용은 COPY FILES 예제를 참고해요.