LIST
LIST
다음 Snowflake 스토리지 기능 중 하나에서 파일 목록을 반환하는 명령이에요:
- 스테이지(Stage): 명명된 내부, 명명된 외부, 지정된 테이블용, 현재 사용자용
- Snowflake의 Git 리포지토리 클론
LIST는 LS로 축약할 수 있어요.
출처: 문서
본문
구문 (Syntax)
구문은 스테이지의 파일을 나열하는지 Git 리포지토리 클론의 파일을 나열하는지에 따라 다릅니다.
스테이지의 경우 (For a stage)
LIST { internalStage | externalStage } [ PATTERN = '<regex_pattern>' ]
여기서:
internalStage ::=
@[<namespace>.]<int_stage_name>[/<path>]
| @[<namespace>.]%<table_name>
| @~[/<path>]
| internalStage | 설명 |
|---|---|
@[namespace.]int_stage_name[/path] |
파일이 지정된 명명된 내부 스테이지에 있음. |
@[namespace.]ext_stage_name[/path] |
파일이 지정된 명명된 외부 스테이지에 있음. |
@[namespace.]%table_name[/path] |
파일이 지정된 테이블의 스테이지에 있음. |
@~[/path] |
파일이 현재 사용자의 스테이지에 있음. |
여기서:
<namespace>는 명명된 스테이지나 테이블이 있는 데이터베이스 및/또는 스키마예요. 세션 내에서 데이터베이스와 스키마가 현재 사용 중이면 선택 사항이고, 그렇지 않으면 필수예요.<path>는 클라우드 스토리지 위치의 파일에 대한 선택적 대소문자 구분 경로로(즉 이름이 공통 문자열로 시작하는 파일), 파일 집합에 대한 접근을 제한해요. 경로는 다른 클라우드 스토리지 서비스에서 prefix 또는 folder라고도 불러요.
참고: 스테이지 이름이나 경로에 공백이나 특수 문자가 포함되면 작은따옴표로 묶어야 해요("my stage"라는 스테이지의 경우
'@"my stage"'). 경로를 지정하면 LIST 명령에 범위를 제공하여 명령 실행 시간을 줄일 수 있어요.
Git 리포지토리 클론의 경우 (For a Git repository clone)
- repositoryClone — 파일을 나열할 리포지토리 클론의 이름과 브랜치, 태그 또는 커밋을 지정해요.
- @[namespace.]repository_clone/path — Git 리포지토리 클론에서 파일을 나열할 때 경로는 필수이며 다음 중 하나로 시작해야 해요:
branches/branch_name— 지정된 브랜치에서 파일을 나열.tags/tag_name— 지정된 태그에서 파일을 나열.commits/commit_hash— 커밋 해시가 지정한 커밋에서 파일을 나열. 리포지토리 클론 이름이나 경로에 공백이나 특수 문자가 포함되면 작은따옴표로 묶어야 해요("my repository"라는 리포지토리의 경우'@"my repository"').
선택 파라미터 (Optional parameters)
- PATTERN = 'regex_pattern' — 출력에서 파일을 필터링하기 위한 정규식 패턴을 지정해요. 명령은 지정된 경로의 모든 파일을 나열하고 발견된 각 파일에 정규식 패턴을 적용해요.
사용 메모 (Usage notes)
- 스토리지 통합(storage integration)을 사용하는 외부 스테이지로 이 명령을 실행하려면 스토리지 통합에 대한 USAGE 권한이 있거나 상속하는 역할을 사용해야 해요.
- 명명된 스테이지와 달리 테이블 및 사용자 스테이지는 일급(first-class) 데이터베이스 객체가 아니라 테이블/사용자와 연결된 내재적 스테이지예요. 따라서 자체적으로 부여 가능한 권한이 없어요:
- 사용자 스테이지의 파일은 항상 나열할 수 있어요(즉 권한 필요 없음).
- 테이블 스테이지의 파일을 나열하려면 테이블에 대한 OWNERSHIP 권한이 있는 역할을 사용해야 해요.
- PATTERN은 Java Pattern 클래스 구문을 지원해요.
출력 (Output)
명령은 다음 테이블의 열을 반환해요. 열 값은 LIST를 스테이지와 함께 사용하는지 Git 리포지토리 클론과 함께 사용하는지에 따라 다릅니다.
스테이지의 경우 (For a stage)
| Column | Data type | Description |
|---|---|---|
| name | VARCHAR | 스테이징된 파일의 이름 |
| size | NUMBER | 압축된 파일의 크기(바이트) |
| md5 | VARCHAR | MD5 열은 스테이징된 데이터 파일 내용의 MD5 해시를 저장해요. 기본 암호화(SNOWFLAKE_FULL)가 있는 내부 스테이지의 경우, 업로드 중 소스 파일이 임의 키로 암호화되어 결과 MD5 다이제스트가 항상 원래 로컬 파일과 다를 수 있어요. Amazon S3 스테이지는 파일 내용의 MD5 해시가 아닐 수 있는 S3 eTag 필드를 통해 값을 보고해요. 고객 관리 암호화 키(CMEK)를 사용하는 Google Cloud 스테이지의 경우 md5가 NULL일 것으로 예상돼요. |
| sha1 | VARCHAR | 사용되지 않음 |
| last_modified | VARCHAR | 파일이 스테이지에서 마지막으로 업데이트된 타임스탬프 |
Git 리포지토리 클론의 경우 (For a Git repository clone)
| Column | Data type | Description |
|---|---|---|
| name | VARCHAR | 확장자가 있는 전체 파일 경로 |
| size | NUMBER | 압축된 파일의 크기(바이트) |
| md5 | VARCHAR | 사용되지 않음 |
| sha1 | VARCHAR | 파일 내용에 SHA-1 해싱 알고리즘을 적용하여 생성된 고유 식별자. Git이 리포지토리의 정확한 파일 버전을 추적하고 참조하는 데 사용하며, 파일 내용의 변경을 감지하는 데 사용할 수 있어요. |
| last_modified | VARCHAR | 나열된 파일과 연결된 커밋의 타임스탬프. 파일 내용이 마지막으로 변경된 시각을 반드시 나타내지는 않아요. |
예시 (Examples)
스테이지의 경우 (For a stage)
mytable 테이블의 스테이지에 있는 모든 파일을 나열해요:
LIST @%mytable;
mystage 명명된 스테이지의 path1 경로에 있는 모든 파일을 나열해요:
LIST @mystage/path1;
mytable 테이블의 스테이지에서 정규식과 일치하는 파일(즉 data_0 문자열을 포함하는 모든 파일 이름)을 나열해요:
LIST @%mytable PATTERN='.*data_0.*';
my_csv_stage 명명된 스테이지의 /analysis/ 경로에서 정규식과 일치하는 파일을 나열해요:
LIST @my_csv_stage/analysis/ PATTERN='.*data_0.*';
명령의 축약 형태로 현재 사용자의 스테이지에 있는 모든 파일을 나열해요:
LS @~;
Git 리포지토리 클론의 경우 (For a Git repository clone)
별도 안내를 참조해요.