REMOVE
REMOVE
외부(외부 클라우드 스토리지) 또는 내부(즉 Snowflake) 스테이지에서 파일을 제거하는 명령이에요. 내부 스테이지의 경우 다음 스테이지 유형이 지원돼요:
- 명명된 내부 스테이지
- 지정된 테이블의 스테이지
- 현재 사용자의 스테이지
REMOVE는 RM으로 축약할 수 있어요.
출처: 문서
본문
구문 (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.*';