내부 스테이지에서 데이터 복사

내부 스테이지에서 데이터 복사

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

출처: Documentation

본문

데이터 로드

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

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

ALTER WAREHOUSE mywarehouse RESUME;

사용자 스테이지

다음 예제는 데이터 로드 준비에서 만든 my_csv_format이라는 이름의 파일 형식을 사용해 사용자 스테이지에서 staged로 접두사가 붙은 모든 파일의 데이터를 로드해요.

COPY INTO mytable from @~/staged FILE_FORMAT = (FORMAT_NAME = 'my_csv_format');

테이블 스테이지

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

COPY INTO mytable FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = '|' SKIP_HEADER = 1);

테이블 스테이지의 파일에서 데이터를 복사할 때는 Snowflake가 테이블 스테이지의 파일을 자동으로 확인하므로 FROM 절을 생략할 수 있다는 점에 주의해요.

이름이 있는 스테이지

다음 예제는 로컬 파일용 내부 스테이지 선택에서 만든 my_stage 이름이 있는 스테이지의 모든 파일에서 데이터를 로드해요.

COPY INTO mytable from @my_stage;

스테이지 정의에 포함되어 있으므로 파일 형식을 지정할 필요가 없다는 점에 주의해요.

데이터 검증

데이터를 로드하기 전에 업로드된 파일의 데이터가 올바르게 로드될지 검증할 수 있어요.

업로드된 파일의 데이터를 검증하려면 VALIDATION_MODE 매개 변수로 COPY INTO <table>을 검증 모드로 실행해요. VALIDATION_MODE 매개 변수는 파일에서 마주친 오류를 반환해요. 그런 다음 파일의 데이터를 수정해 오류 없이 로드되도록 할 수 있어요.

또한 COPY INTO <table> 명령의 ON_ERROR 복사 옵션은 로드 중 파일에서 오류가 발생할 때 수행할 작업을 나타내요.

내부 스테이징된 파일 모니터링

Snowflake는 내부 스테이지(사용자, 테이블, 스테이지용)에 업로드된 각 파일에 대한 자세한 메타데이터를 유지 관리해요. 여기에는 다음이 포함돼요.

  • 파일 이름
  • 파일 크기(업로드 중 압축이 지정된 경우 압축된 크기)
  • LAST_MODIFIED 날짜 — 데이터 파일이 처음 스테이징된 시각 또는 마지막으로 수정된 시각 중 더 나중 것.

또한 Snowflake는 이전 14일 내에 실행된 COPY INTO 명령에 대한 이력 데이터를 보존해요. 이 메타데이터를 사용해 업로드 완료 후 파일 삭제를 포함해 로드 프로세스를 모니터링하고 관리할 수 있어요.

  • LIST 명령을 사용해 스테이징된 데이터 파일의 상태를 확인해요.
  • Snowsight의 Query History 페이지에서 각 COPY INTO <table> 명령의 상태를 모니터링해요.
  • VALIDATE 함수를 사용해 로드된 데이터 파일을 검증하고 로드 중 발생한 오류를 검색해요.
  • LOAD_HISTORY 정보 스키마 뷰를 사용해 COPY INTO 명령으로 테이블에 로드된 데이터의 기록을 검색해요.

데이터 파일 관리

스테이징된 파일은 다음 방법을 사용해 Snowflake 스테이지(사용자 스테이지, 테이블 스테이지 또는 이름이 있는 스테이지)에서 삭제할 수 있어요.

  • 성공적으로 로드된 파일은 COPY INTO <table> 명령에서 PURGE 복사 옵션을 지정해 로드 중에 스테이지에서 삭제할 수 있어요.
  • 로드가 완료된 후에는 REMOVE 명령을 사용해 스테이지의 파일을 제거해요.

파일을 제거하면 실수로 다시 로드되는 일이 없어져요. 또한 스테이지의 기존 파일이 이미 로드되었는지 확인하기 위해 COPY 명령이 검사해야 하는 파일 수가 줄어 로드 성능도 향상돼요.

한 스테이지에서 다른 스테이지로 파일 복사

COPY FILES 명령을 사용해 파일을 한 이름이 있는 스테이지에서 다른 스테이지로 복사해 데이터를 한 위치에 정리해요.

다음 예제는 원본 스테이지(src_stage)의 모든 파일을 대상 스테이지(trg_stage)로 복사해요.

COPY FILES
  INTO @trg_stage
  FROM @src_stage;

복사할 파일 이름 목록을 지정하거나 패턴 일치를 사용해 파일을 복사할 수도 있어요. 자세한 내용은 COPY FILES 예제를 참고해요.

더 알아보기