Snowflake 스테이지로 언로드하기

이 항목 세트에서는 COPY 명령을 사용하여 테이블에서 내부(즉, Snowflake) 스테이지로 데이터를 언로드하는 방법을 설명합니다. 그러면 언로드된 데이터 파일을 로컬 파일 시스템으로 다운로드할 수 있습니다.

아래 다이어그램과 같이, 로컬 파일 시스템으로 데이터를 언로드하는 작업은 다음의 두 개별 단계로 수행됩니다.

1단계

COPY INTO <위치> 명령을 사용하여 Snowflake 데이터베이스 테이블에서 Snowflake 스테이지의 1개 이상 파일로 데이터를 복사합니다. SQL 문에서, 파일을 쓸 스테이지(명명된 스테이지 또는 테이블/사용자 스테이지)를 지정합니다.

사용하는 스테이지에 관계없이, 이 명령을 수동으로 실행하거나 스크립트 내에서 실행할 경우 이 단계에서는 세션에 대해 실행 중인 현재 가상 웨어하우스가 필요합니다. 웨어하우스는 테이블의 행을 쓰기 위한 컴퓨팅 리소스를 제공합니다.

2단계

GET 명령을 사용하여 데이터 파일을 로컬 파일 시스템으로 다운로드합니다.

Unloading data to a Snowflake stage

이 항목 세트의 지침에서는 데이터 언로드 준비하기 를 읽고 원하는 경우 명명된 파일 형식을 생성한 것으로 가정합니다.

시작하기 전에 데이터 언로드 고려 사항 에서 모범 사례, 팁 및 기타 지침을 확인할 수도 있습니다.

이 항목의 내용:

데이터 언로드하기

이 섹션에서는 테이블 데이터를 명명된 내부 스테이지, 테이블 스테이지 또는 사용자 스테이지로 언로드하기 위한 지침을 설명합니다.

데이터를 명명된 내부 스테이지로 언로딩하기

내부 스테이지는 데이터를 언로드하기 위한 최상의 유연성을 제공하는 명명된 데이터베이스 오브젝트입니다. 그리고 데이터베이스 오브젝트이므로 명명된 스테이지에 대한 권한을 모든 역할에 부여할 수 있습니다.

명명된 내부 스테이지는 다음과 같이 웹 인터페이스 또는 SQL을 사용하여 생성할 수 있습니다.

Classic Console

Databases Databases tab » <db_이름> » Stages 을 클릭합니다.

SQL

CREATE STAGE

명명된 스테이지 만들기

다음 예에서는 데이터 언로드 준비하기 에서 생성된 이름이 my_csv_unload_format 인 명명된 파일 형식 오브젝트를 참조하는 내부 스테이지를 생성합니다.

CREATE OR REPLACE STAGE my_unload_stage
  FILE_FORMAT = my_csv_unload_format;
Copy

명명된 스테이지에 데이터 언로드하기

  1. COPY INTO <위치> 명령을 사용하여 테이블의 모든 행을 my_csv_unload_format 스테이지의 1개 이상 파일로 언로드합니다. 이 문에서는 언로드된 파일 앞에 unload/ 를 접두사로 추가하여 스테이지의 파일을 구성합니다.

    예:

    COPY INTO @mystage/unload/ from mytable;
    
    Copy

    @ 문자는 자체가 명명된 스테이지를 식별한다는 점에 유의하십시오.

    참고

    스테이지에 파일 형식 옵션이 정의되었으므로 COPY 명령에서 동일한 파일 형식 옵션을 지정할 필요가 없습니다.

  2. LIST 명령을 사용하여 스테이지에 언로드된 파일 목록을 살펴봅니다.

    LIST @mystage;
    
    +----------------------------------+------+----------------------------------+-------------------------------+
    | name                             | size | md5                              | last_modified                 |
    |----------------------------------+------+----------------------------------+-------------------------------|
    | mystage/unload/data_0_0_0.csv.gz |  112 | 6f77daba007a643bdff4eae10de5bed3 | Mon, 11 Sep 2017 18:13:07 GMT |
    +----------------------------------+------+----------------------------------+-------------------------------+
    
    Copy
  3. GET 명령을 사용하여 테이블 스테이지에서 로컬 시스템으로 생성된 파일을 다운로드합니다. 다음 예에서는 파일을 data/unload 디렉터리로 다운로드합니다.

    예:

    Linux 또는 macOS:

    GET @mystage/unload/data_0_0_0.csv.gz file:///data/unload;
    
    Copy

    Windows:

    GET @mystage/unload/data_0_0_0.csv.gz file://C:\data\unload;
    
    Copy

데이터를 테이블 스테이지로 언로드하기

  1. COPY INTO <위치> 명령을 사용하여 테이블의 모든 행을 테이블 스테이지의 1개 이상 파일로 언로드합니다. 다음 예에서는 데이터 언로드 준비하기 에서 생성한 명명된 my_csv_unload_format 파일 형식을 사용하여 데이터 파일을 스테이지로 언로드합니다. 이 문에서는 언로드된 파일 앞에 unload/ 를 접두사로 추가하여 스테이지의 파일을 구성합니다.

    예:

    COPY INTO @%mytable/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
    
    Copy

    @% 문자 조합은 테이블 스테이지를 식별한다는 점에 유의하십시오.

  2. LIST 명령을 사용하여 스테이지에 언로드된 파일 목록을 살펴봅니다.

    LIST @%mytable;
    
    +-----------------------+------+----------------------------------+-------------------------------+
    | name                  | size | md5                              | last_modified                 |
    |-----------------------+------+----------------------------------+-------------------------------|
    | unload/data_0_0_0.csv |   96 | 29918f18bcb35e7b6b628ca41024236c | Mon, 11 Sep 2017 17:45:20 GMT |
    +-----------------------+------+----------------------------------+-------------------------------+
    
    Copy
  3. GET 명령을 사용하여 테이블 스테이지에서 로컬 시스템으로 생성된 파일을 다운로드합니다. 다음 예에서는 파일을 data/unload 디렉터리로 다운로드합니다.

    예:

    Linux 또는 macOS:

    GET @%mytable/unload/data_0_0_0.csv file:///data/unload;
    
    Copy

    Windows:

    GET @%mytable/unload/data_0_0_0.csv file://C:\data\unload;
    
    Copy

데이터를 사용자 스테이지로 언로드하기

  1. COPY INTO <위치> 명령을 사용하여 테이블의 모든 행을 스테이지의 1개 이상 파일로 언로드합니다. 다음 예에서는 데이터 언로드 준비하기 에서 생성한 명명된 my_csv_unload_format 파일 형식을 사용하여 데이터 파일을 사용자 스테이지로 언로드합니다. 이 문에서는 언로드된 파일 앞에 unload/ 를 접두사로 추가하여 스테이지의 파일을 구성합니다.

    예:

    COPY INTO @~/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
    
    Copy

    @~ 문자 조합은 사용자 스테이지를 식별한다는 점에 유의하십시오.

  2. LIST 명령을 사용하여 스테이지에 언로드된 파일 목록을 살펴봅니다.

    LIST @~;
    
    +-----------------------+------+----------------------------------+-------------------------------+
    | name                  | size | md5                              | last_modified                 |
    |-----------------------+------+----------------------------------+-------------------------------|
    | unload/data_0_0_0.csv |   96 | 94a306c55733b95a0887511ff355936b | Mon, 11 Sep 2017 17:25:07 GMT |
    +-----------------------+------+----------------------------------+-------------------------------+
    
    Copy
  3. GET 명령을 사용하여 사용자 스테이지에서 로컬 시스템으로 생성된 파일을 다운로드합니다. 다음 예에서는 파일을 data/unload 디렉터리로 다운로드합니다.

    예:

    Linux 또는 macOS:

    GET @~/unload/data_0_0_0.csv file:///data/unload;
    
    Copy

    Windows:

    GET @~/unload/data_0_0_0.csv file://C:\data\unload;
    
    Copy

언로드한 데이터 파일 관리하기

스테이징된 파일은 작업 완료 후 스테이지에서 파일을 삭제하기 위해 REMOVE 명령을 사용하여 Snowflake 스테이지에서 삭제할 수 있습니다.

파일을 제거하면 스테이지의 기존 파일이 이미 로드되었는지 여부를 확인하기 위해 COPY INTO <테이블> 명령에서 스캔해야 하는 파일 수가 감소하므로 데이터를 로드할 때 성능이 향상됩니다.