REMOVE

REMOVE

외부(외부 클라우드 스토리지) 또는 내부(즉 Snowflake) 스테이지에서 파일을 제거하는 명령이에요. 내부 스테이지의 경우 다음 스테이지 유형이 지원돼요:

  • 명명된 내부 스테이지
  • 지정된 테이블의 스테이지
  • 현재 사용자의 스테이지

REMOVERM으로 축약할 수 있어요.

출처: 문서

본문

구문 (Syntax)

REMOVE { 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"').

선택 파라미터 (Optional parameters)

  • PATTERN = 'regex_pattern' — 제거할 파일을 필터링하기 위한 정규식 패턴을 지정해요. 명령은 지정된 경로의 모든 파일을 나열하고 발견된 각 파일에 정규식 패턴을 적용해요.

사용 메모 (Usage notes)

  • 스테이지의 파일에서 데이터를 로드 중이라면 데이터가 성공적으로 로드될 때까지 스테이징된 파일을 제거하지 마세요. 데이터가 성공적으로 로드되었는지 확인하려면 COPY_HISTORY 명령을 사용해요. STATUS 열을 확인하여 파일의 데이터가 로드되었는지 확인해요. 상태가 "Load in progress"이면 스테이징된 파일을 제거하면 부분 로드와 데이터 손실이 발생할 수 있다는 점을 기억하세요.

  • 스토리지 통합(storage integration)을 사용하는 외부 스테이지로 이 명령을 실행하려면 스토리지 통합에 대한 USAGE 권한이 있거나 상속하는 역할을 사용해야 해요.

  • 외부 스테이지에서 파일을 제거하려면 클라우드 스토리지 계정에서 Snowflake에 다음 역할이나 권한을 부여해야 해요:

    Cloud Storage Service Role or Permission
    Amazon S3 s3:DeleteObject
    Google Cloud Storage storage.objects.delete
    Microsoft Azure (Blob storage) Storage Blob Data Contributor
  • 이 명령은 지정된 경로와 일치하는 모든 디렉토리와 파일을 제거해요. 예를 들어 다음 문장은 mytable 테이블 스테이지의 다음 객체 중 하나와 일치해요: myobject.csv.gz(파일), myobject(디렉토리), myobject_new(디렉토리).

rm @%mytable/myobject;
  • 특정 디렉토리의 모든 파일을 제거하려면 경로 끝에 슬래시(/)를 포함해요. 예:
rm @%mytable/myobject/;
  • REMOVE 문장이 실행 완료 전에 중단되면, 문장이 이미 제거한 파일은 복원되지 않아요.

예시 (Examples)

mystage 명명된 내부 또는 외부 스테이지의 path1/subpath2 경로에서 모든 파일을 제거해요:

REMOVE @mystage/path1/subpath2;

orders 테이블의 스테이지에서 모든 파일을 제거해요:

REMOVE @%orders;

명령의 축약 형태로 현재 사용자의 스테이지에서 jun 패턴과 일치하는 이름의 파일을 제거해요:

RM @~ pattern='.*jun.*';

더 알아보기 (Learn more)