S3 스테이지에서 데이터 복사

S3 스테이지에서 데이터 복사

스테이징된 파일의 데이터를 대상 테이블에 로드해요.

출처: Documentation

본문

데이터 로드

COPY INTO <table>을 실행해 데이터를 대상 테이블에 로드해요.

참고 — 데이터를 로드하려면 웨어하우스가 필요해요. 자동 재개로 구성되지 않은 웨어하우스를 사용하는 경우 ALTER WAREHOUSE를 실행해 웨어하우스를 재개해요. 웨어하우스 시작에는 최대 5분이 걸릴 수 있다는 점에 주의해요.

ALTER WAREHOUSE mywarehouse RESUME;

다음 예제는 S3 스테이지 만들기에서 만든 my_ext_stage라는 이름의 스테이지의 파일에서 데이터를 로드해요. 패턴 일치를 사용하므로 이 문은 이름이 sales 문자열로 시작하는 파일만 로드해요.

COPY INTO mytable
  FROM @my_ext_stage
  PATTERN='.*sales.*.csv';

스테이지 정의에 이름이 있는 파일 형식이 포함되어 있으므로 파일 형식 옵션은 지정하지 않는다는 점에 주의해요.

다음 예제는 데이터 로드 준비에서 만든 my_csv_format이라는 이름의 파일 형식을 사용해 S3 버킷에서 data/files로 접두사가 붙은 모든 파일을 로드해요.

COPY INTO mytable
  FROM s3://mybucket/data/files credentials=(AWS_KEY_ID='$AWS_ACCESS_KEY_ID' AWS_SECRET_KEY='$AWS_SECRET_ACCESS_KEY')
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);

다음 임시 예제는 S3 버킷의 모든 파일에서 데이터를 로드해요. COPY 명령은 이름이 있는 파일 형식을 참조하는 대신 파일 형식 옵션을 지정해요. 이 예제는 파이프(|) 필드 구분 기호가 있는 CSV 파일을 로드해요. COPY 명령은 데이터 파일의 첫 줄을 건너뜁니다.

COPY INTO mytable
  FROM s3://mybucket credentials=(AWS_KEY_ID='$AWS_ACCESS_KEY_ID' AWS_SECRET_KEY='$AWS_SECRET_ACCESS_KEY')
  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 예제를 참고해요.

더 알아보기