Unload into a Snowflake stage¶
이 항목 세트에서는 COPY 명령을 사용하여 테이블에서 내부(즉, Snowflake) 스테이지로 데이터를 언로드하는 방법을 설명합니다. 그러면 언로드된 데이터 파일을 로컬 파일 시스템으로 다운로드할 수 있습니다.
아래 다이어그램과 같이, 로컬 파일 시스템으로 데이터를 언로드하는 작업은 다음의 두 개별 단계로 수행됩니다.
- 1단계:
COPY INTO <위치> 명령을 사용하여 Snowflake 데이터베이스 테이블에서 Snowflake 스테이지의 1개 이상 파일로 데이터를 복사합니다. SQL 문에서, 파일을 쓸 스테이지(명명된 스테이지 또는 테이블/사용자 스테이지)를 지정합니다.
사용하는 스테이지에 관계없이, 이 명령을 수동으로 실행하거나 스크립트 내에서 실행할 경우 이 단계에서는 세션에 대해 실행 중인 현재 가상 웨어하우스가 필요합니다. 웨어하우스는 테이블의 행을 쓰기 위한 컴퓨팅 리소스를 제공합니다.
- 2단계:
GET 명령을 사용하여 데이터 파일을 로컬 파일 시스템으로 다운로드합니다.
팁
이 항목 세트의 지침에서는 File formats to unload data 를 읽고 원하는 경우 명명된 파일 형식을 생성한 것으로 가정합니다.
시작하기 전에 데이터 언로드 고려 사항 에서 모범 사례, 팁 및 기타 지침을 확인할 수도 있습니다.
Unload the data¶
이 섹션에서는 테이블 데이터를 명명된 내부 스테이지, 테이블 스테이지 또는 사용자 스테이지로 언로드하기 위한 지침을 설명합니다.
Unload data to a named internal stage¶
내부 스테이지는 데이터를 언로드하기 위한 최상의 유연성을 제공하는 명명된 데이터베이스 오브젝트입니다. 그리고 데이터베이스 오브젝트이므로 명명된 스테이지에 대한 권한을 모든 역할에 부여할 수 있습니다.
명명된 내부 스테이지는 다음과 같이 웹 인터페이스 또는 SQL을 사용하여 생성할 수 있습니다.
- Snowsight:
탐색 메뉴에서 Catalog » Database Explorer 를 선택합니다. 그런 다음 <db_name> » :ui:`Stages`를 선택합니다.
- SQL:
Create a named stage¶
다음 예에서는 File formats to unload data 에서 생성된 이름이 my_csv_unload_format 인 명명된 파일 형식 오브젝트를 참조하는 내부 스테이지를 생성합니다.
CREATE OR REPLACE STAGE my_unload_stage FILE_FORMAT = my_csv_unload_format;
Unload data to the named stage¶
COPY INTO <위치> 명령을 사용하여 테이블의 모든 행을
my_csv_unload_format스테이지의 1개 이상 파일로 언로드합니다. 이 문에서는 언로드된 파일 앞에unload/를 접두사로 추가하여 스테이지의 파일을 구성합니다.예:
COPY INTO @mystage/unload/ from mytable;
@문자는 자체가 명명된 스테이지를 식별한다는 점에 유의하십시오.참고
스테이지에 파일 형식 옵션이 정의되었으므로 COPY 명령에서 동일한 파일 형식 옵션을 지정할 필요가 없습니다.
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 | +----------------------------------+------+----------------------------------+-------------------------------+
GET 명령을 사용하여 테이블 스테이지에서 로컬 시스템으로 생성된 파일을 다운로드합니다. 다음 예에서는 파일을
data/unload디렉터리로 다운로드합니다.예:
Linux 또는 macOS:
GET @mystage/unload/data_0_0_0.csv.gz file:///data/unload;
Windows:
GET @mystage/unload/data_0_0_0.csv.gz file://C:\data\unload;
Unload data to a table stage¶
COPY INTO <위치> 명령을 사용하여 테이블의 모든 행을 테이블 스테이지의 1개 이상 파일로 언로드합니다. 다음 예에서는 File formats to unload data 에서 생성한 명명된
my_csv_unload_format파일 형식을 사용하여 데이터 파일을 스테이지로 언로드합니다. 이 문에서는 언로드된 파일 앞에unload/를 접두사로 추가하여 스테이지의 파일을 구성합니다.예:
COPY INTO @%mytable/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
@%문자 조합은 테이블 스테이지를 식별한다는 점에 유의하십시오.LIST 명령을 사용하여 스테이지에 언로드된 파일 목록을 살펴봅니다.
LIST @%mytable; +-----------------------+------+----------------------------------+-------------------------------+ | name | size | md5 | last_modified | |-----------------------+------+----------------------------------+-------------------------------| | unload/data_0_0_0.csv | 96 | 29918f18bcb35e7b6b628ca41024236c | Mon, 11 Sep 2017 17:45:20 GMT | +-----------------------+------+----------------------------------+-------------------------------+
GET 명령을 사용하여 테이블 스테이지에서 로컬 시스템으로 생성된 파일을 다운로드합니다. 다음 예에서는 파일을
data/unload디렉터리로 다운로드합니다.예:
Linux 또는 macOS:
GET @%mytable/unload/data_0_0_0.csv file:///data/unload;
Windows:
GET @%mytable/unload/data_0_0_0.csv file://C:\data\unload;
Unload data to your user stage¶
COPY INTO <위치> 명령을 사용하여 테이블의 모든 행을 스테이지의 1개 이상 파일로 언로드합니다. 다음 예에서는 File formats to unload data 에서 생성한 명명된
my_csv_unload_format파일 형식을 사용하여 데이터 파일을 사용자 스테이지로 언로드합니다. 이 문에서는 언로드된 파일 앞에unload/를 접두사로 추가하여 스테이지의 파일을 구성합니다.예:
COPY INTO @~/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
@~문자 조합은 사용자 스테이지를 식별한다는 점에 유의하십시오.LIST 명령을 사용하여 스테이지에 언로드된 파일 목록을 살펴봅니다.
LIST @~; +-----------------------+------+----------------------------------+-------------------------------+ | name | size | md5 | last_modified | |-----------------------+------+----------------------------------+-------------------------------| | unload/data_0_0_0.csv | 96 | 94a306c55733b95a0887511ff355936b | Mon, 11 Sep 2017 17:25:07 GMT | +-----------------------+------+----------------------------------+-------------------------------+
GET 명령을 사용하여 사용자 스테이지에서 로컬 시스템으로 생성된 파일을 다운로드합니다. 다음 예에서는 파일을
data/unload디렉터리로 다운로드합니다.예:
Linux 또는 macOS:
GET @~/unload/data_0_0_0.csv file:///data/unload;
Windows:
GET @~/unload/data_0_0_0.csv file://C:\data\unload;
Manage unloaded data files¶
스테이징된 파일은 작업 완료 후 스테이지에서 파일을 삭제하기 위해 REMOVE 명령을 사용하여 Snowflake 스테이지에서 삭제할 수 있습니다.
파일을 제거하면 스테이지의 기존 파일이 이미 로드되었는지 여부를 확인하기 위해 COPY INTO <테이블> 명령에서 스캔해야 하는 파일 수가 감소하므로 데이터를 로드할 때 성능이 향상됩니다.