LIST

LIST

다음 Snowflake 스토리지 기능 중 하나에서 파일 목록을 반환하는 명령이에요:

  • 스테이지(Stage): 명명된 내부, 명명된 외부, 지정된 테이블용, 현재 사용자용
  • Snowflake의 Git 리포지토리 클론

LISTLS로 축약할 수 있어요.

출처: 문서

본문

구문 (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)

별도 안내를 참조해요.

더 알아보기 (Learn more)