GET
GET
다음 내부 스테이지 유형 중 하나에서 클라이언트 머신의 로컬 디렉토리나 폴더로 데이터 파일을 다운로드하는 명령이에요:
- 명명된 내부 스테이지(named internal stage).
- 지정된 테이블의 내부 스테이지.
- 현재 사용자의 내부 스테이지.
COPY INTO <location> 명령으로 데이터를 테이블에서 Snowflake 스테이지로 언로드한 후, 이 명령으로 데이터 파일을 다운로드할 수 있어요.
출처: 문서
본문
구문 (Syntax)
GET <internalStage> file://<local_directory_path>
[ PARALLEL = <integer> ]
[ PATTERN = '<regex_pattern>' ]
여기서:
internalStage ::=
@[<namespace>.]<int_stage_name>[/<path>]
| @[<namespace>.]%<table_name>
| @~[/<path>]
| internalStage | 설명 |
|---|---|
@[namespace.]int_stage_name[/path] |
지정된 명명된 내부 스테이지에서 파일을 다운로드해요. |
@[namespace.]%table_name[/path] |
지정된 테이블의 스테이지에서 파일을 다운로드해요. |
@~[/path] |
현재 사용자의 스테이지에서 파일을 다운로드해요. |
여기서:
<namespace>는 명명된 내부 스테이지나 테이블이 있는 데이터베이스 및/또는 스키마예요. 세션 내에서 데이터베이스와 스키마가 현재 사용 중이면 선택 사항이고, 그렇지 않으면 필수예요.<path>는 클라우드 스토리지 위치의 파일에 대한 선택적 대소문자 구분 경로로(즉 이름이 공통 문자열로 시작하는 파일), 파일 집합에 대한 접근을 제한해요. 경로는 다른 클라우드 스토리지 서비스에서 prefix 또는 folder라고도 불러요.<path>가 지정되었지만 경로에 파일이 명시적으로 명명되지 않으면, 경로의 모든 데이터 파일이 다운로드돼요.
참고: 스테이지 이름이나 경로에 공백이나 특수 문자가 포함되면 작은따옴표로 묶어야 해요("my stage"라는 스테이지의 경우
'@"my stage"'예시).
- file://local_directory_path — 파일이 다운로드되는 클라이언트 머신의 로컬 디렉토리 경로를 지정해요:
- Linux/macOS: 경로에 초기 슬래시를 포함해야 해요(예:
file:///tmp/load). 디렉토리 경로에 특수 문자가 포함되면 전체 파일 URI를 작은따옴표로 묶어야 해요. - Windows: 경로에 드라이브와 백슬래시를 포함해야 해요(예:
file://C:\temp\load). 디렉토리 경로에 특수 문자가 포함되면 전체 파일 URI를 작은따옴표로 묶어야 해요. 묶인 URI에서 드라이브와 경로 구분자는 슬래시(/)예요(예:'file://C:/Users/%Username%/Data 2025-01').
- Linux/macOS: 경로에 초기 슬래시를 포함해야 해요(예:
참고: GET 명령은 JDBC 드라이버나 ODBC 드라이버를 사용할 때를 제외하고 경로의 일부로 파일 이름을 지정하면 오류를 반환해요. 두 드라이버 중 하나를 사용할 때 파일 이름을 지정하면 드라이버는 파일 이름을 디렉토리 경로의 일부로 취급하고 지정된 파일 이름의 하위 디렉토리를 만들어요. 예를 들어
file:///tmp/load/file.csv를 지정하면 JDBC 또는 ODBC 드라이버는/tmp/load/아래에file.csv/라는 하위 디렉토리를 만들어요. 그런 다음 GET 명령은 스테이징된 파일을 이 새 하위 디렉토리에 다운로드해요.
선택 파라미터 (Optional parameters)
- PARALLEL = integer — 파일 다운로드에 사용할 스레드 수를 지정해요. 다운로드의 세분성 단위는 파일 하나예요. 큰 파일을 다운로드할 때 스레드 수를 늘리면 성능이 향상될 수 있어요. 지원 값: 1(병렬 없음)부터 99(파일 다운로드에 99 스레드 사용)까지의 모든 정수. 기본값: 10
- PATTERN = 'regex_pattern' — 다운로드할 파일을 필터링하기 위한 정규식 패턴을 지정해요. 명령은 지정된 경로의 모든 파일을 나열하고 발견된 각 파일에 정규식 패턴을 적용해요. 기본값: 없음(지정된 스테이지의 모든 파일이 다운로드됨)
사용 메모 (Usage notes)
- GET은 다음 작업을 지원하지 않아요:
- 외부 스테이지에서 파일 다운로드. 외부 스테이지에서 파일을 다운로드하려면 클라우드 서비스에서 제공하는 유틸리티를 사용해요.
- 분기하는 디렉토리 경로를 가진 여러 파일 다운로드. 이 명령은 클라이언트 머신으로 파일을 전송할 때 스테이지 디렉토리 구조를 보존하지 않아요. 예를 들어 다음 GET 문장은 스테이지의 서로 다른 하위 디렉토리에 있는
tmp.parquet라는 여러 파일을 다운로드할 수 없으므로 오류를 반환해요.
GET @my_int_stage my_target_path PATTERN = "tmp.parquet"; - ODBC 드라이버는 다음 플랫폼에서 호스팅되는 Snowflake 계정으로 GET을 지원해요:
- Amazon Web Services(ODBC Driver Version 2.17.5 이상 사용).
- Google Cloud(ODBC Driver Version 2.21.5 이상 사용).
- Microsoft Azure(ODBC Driver Version 2.20.2 이상 사용).
- 이 명령은 두 Snowflake 웹 인터페이스의 Worksheets 페이지에서 실행할 수 없어요. 대신 SnowSQL 클라이언트로 데이터 파일을 다운로드하거나 특정 Snowflake 클라이언트 문서에서 이 명령 지원 여부를 확인해요.
- 이 명령은 파일 이름을 변경하지 않아요.
- 다운로드된 파일은 업로드(PUT 사용) 또는 테이블에서 언로드(COPY INTO
사용)될 때 파일을 암호화하는 데 사용된 것과 동일한 키로 자동 복호화돼요. - PUT 및 GET 명령의 경우
QUERY_HISTORY의 EXECUTION_STATUS가 success여도 데이터 파일이 성공적으로 업로드 또는 다운로드되었음을 의미하지 않아요. 이 상태는 Snowflake가 파일 전송을 진행할 권한을 받았음을 나타내는 것뿐이에요.
예시 (Examples)
mytable 테이블의 스테이지에 있는 모든 파일을 /tmp/data 로컬 디렉토리로 다운로드해요(Linux 또는 macOS 환경):
GET @%mytable file:///tmp/data/;
현재 사용자의 스테이지에서 myfiles 경로의 파일을 /tmp/data 로컬 디렉토리로 다운로드해요(Linux 또는 macOS 환경):
GET @~/myfiles file:///tmp/data/;