Google Cloud Storage 스테이지에서 데이터 복사하기¶
스테이징된 파일에서 대상 테이블로 데이터를 로드합니다.
이 항목의 내용:
데이터 로드하기¶
COPY INTO <테이블> 을 실행하여 데이터를 대상 테이블로 로드합니다.
참고
데이터를 로드하려면 웨어하우스 가 필요합니다. 자동으로 다시 시작하도록 설정되지 않은 웨어하우스를 사용 중인 경우에는 ALTER WAREHOUSE 를 실행하여 웨어하우스를 재개합니다. 웨어하우스를 시작하기 위해서는 최대 5분이 걸릴 수 있습니다.
ALTER WAREHOUSE mywarehouse RESUME;
중요
외부 스테이지에 대해 반환된 오브젝트의 목록에는 1개 이상의 “디렉터리 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 |
+---------------------------------------+------+----------------------------------+-------------------------------+
Google에서 제공하는 다른 도구를 사용하지 않고 Google Cloud Platform 콘솔에서 디렉터리를 만들 때 이러한 blob이 나열됩니다.
오브젝트 목록에 디렉터리 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
파일 형식을 사용하여 클라우드 저장소 버킷에서 data/files
경로(즉, 접두사)가 포함된 모든 파일을 로드합니다. 경로는 패턴 일치와 조합하여 사용할 수 있습니다.
COPY INTO mytable FROM @my_gcs_stage/mybucket/data/files FILE_FORMAT = (FORMAT_NAME = my_csv_format);
임시 파일 형식 옵션을 사용하여 데이터 로드하기¶
다음 임시 예시는 클라우드 저장소 버킷의 모든 파일에서 데이터를 로드합니다. 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 <테이블> 을 실행합니다. VALIDATION_MODE 매개 변수는 파일에서 발생한 오류를 반환합니다. 그런 다음 파일의 데이터를 수정하여 오류 없이 로드할 수 있습니다.
또한, COPY INTO <테이블> 은 ON_ERROR 복사 옵션을 제공하여 로드 중 파일에 오류가 발생하는 경우 수행할 작업을 지정할 수 있습니다.
데이터 로드 모니터링하기¶
Snowflake는 이전 14일 이내에 실행된 COPY INTO 명령에 대한 과거 데이터를 유지합니다. 메타데이터는 업로드 완료 후 파일 삭제를 포함하여 로드 프로세스를 모니터링하고 관리하기 위한 용도로 사용할 수 있습니다.
각 COPY INTO <테이블> 명령의 상태는 Classic Console 의 History 페이지에서 모니터링할 수 있습니다.
LOAD_HISTORY Information Schema 뷰를 사용하여 COPY INTO 명령을 통해 테이블에 로드된 데이터 내역을 검색합니다.
한 스테이지에서 다른 스테이지로 파일 복사하기¶
COPY FILES 명령을 사용하면 명명된 한 스테이지에서 다른 스테이지로 파일을 복사하여 데이터를 단일 위치로 구성할 수 있습니다.
다음 예시에서는 원본 스테이지(src_stage
)의 모든 파일을 대상 스테이지(trg_stage
)에 복사합니다.
COPY FILES
INTO @trg_stage
FROM @src_stage;
복사할 파일 이름 목록을 지정하거나 패턴 일치를 사용하여 파일을 복사할 수도 있습니다. 자세한 내용은 COPY FILES 예 를 참조하십시오.