REMOVE¶
Entfernt Dateien entweder aus einem externen (externer Cloudspeicher) oder internen (z. B. Snowflake) Stagingbereich.
Für interne Stagingbereiche werden die folgenden Stagingbereichstypen unterstützt:
Benannter interner Stagingbereich
Stagingbereich einer spezifizierten Tabelle
Stagingbereich des aktuellen Benutzers
REMOVE kann mit RM abgekürzt werden.
- Siehe auch:
Syntax¶
REMOVE { internalStage | externalStage } [ PATTERN = '<regex_pattern>' ]
Wobei:
internalStage ::= @[<namespace>.]<int_stage_name>[/<path>] | @[<namespace>.]%<table_name>[/<path>] | @~[/<path>]externalStage ::= @[<namespace>.]<ext_stage_name>[/<path>]
Erforderliche Parameter¶
internalStage | externalStage
Gibt den Speicherort an, an dem die Datendateien bereitgestellt werden:
@[namespace.]int_stage_name[/path]
Die Dateien befinden sich im angegebenen, benannten internen Stagingbereich.
@[namespace.]ext_stage_name[/path]
Die Dateien befinden sich im angegebenen, benannten externen Stagingbereich.
@[namespace.]%table_name[/path]
Die Dateien befinden sich im Stagingbereich der angegebenen Tabelle.
@~[/path]
Die Dateien befinden sich im Stagingbereich des aktuellen Benutzers.
Wobei:
namespace
ist die Datenbank und/oder das Schema, in dem sich der benannte interne Stagingbereich oder die Tabelle befindet. Die Angabe ist optional, wenn in der Sitzung aktuell eine Datenbank und ein Schema verwendet werden, andernfalls ist die Angabe obligatorisch.path
ist ein optionaler Pfad mit Unterscheidung von Groß-/Kleinschreibung für Dateien am Cloudspeicherort (d. h. Dateien haben Namen, die mit einer gemeinsamen Zeichenfolge beginnen), wodurch der Zugriff auf bestimmte Dateien eingegrenzt wird. Pfade werden von den verschiedenen Cloudspeicherdiensten alternativ als Präfixe oder Ordner bezeichnet.
Bemerkung
Wenn der Stagingbereichsname oder -pfad Leerzeichen oder Sonderzeichen enthält, muss er in einfache Anführungszeichen eingeschlossen werden (z. B.
'@"my stage"'
für einen Stagingbereich mit dem Namen"my stage"
).
Optionale Parameter¶
PATTERN = 'regex_pattern'
Gibt ein Muster für reguläre Ausdrücke zum Filtern von Dateien an, die entfernt werden sollen. Der Befehl listet alle Dateien im angegebenen
path
(Pfad) auf und wendet auf jede der gefundenen Dateien das Muster für reguläre Ausdrücke an.
Nutzungshinweise¶
Wenn Sie Daten aus einer Datei in einem Stagingbereich laden, sollten Sie die Stagingdateien erst entfernen, nachdem die Daten erfolgreich geladen wurden. Um zu prüfen, ob die Daten erfolgreich geladen wurden, verwenden Sie den Befehl COPY_HISTORY. Überprüfen Sie die Spalte
STATUS
, um festzustellen, ob die Daten aus der Datei geladen wurden. Beachten Sie, dass bei einem Status vonLoad in progress
durch das Entfernen der Stagingdatei die Daten möglicherweise nur teilweise geladen werden und es zu Datenverlusten kommen kann.Das Entfernen von Dateien aus einem externen Stagingbereich erfordert die Erteilung der folgenden Rolle oder Berechtigung für Snowflake in Ihrem Cloudspeicherkonto:
Cloudspeicherdienst
Rolle oder Berechtigung
Anleitung
Amazon S3
s3:DeleteObject
Google Cloud Storage
storage.objects.delete
Microsoft Azure (Blob-Speicher)
Storage Blob Data Contributor
Mit diesem Befehl werden alle Verzeichnisse und Dateien entfernt, die mit einem angegebenen Pfad übereinstimmen. Die folgende Anweisung würde beispielsweise mit den folgenden Objekten des Tabellen-Stagingbereichs
mytable
übereinstimmen:myobject.csv.gz
(Datei)myobject
(Verzeichnis)myobject_new
(Verzeichnis)
rm @%mytable/myobject;
Um alle Dateien eines bestimmten Verzeichnisses zu entfernen, fügen Sie am Ende des Pfads einen Schrägstrich (
/
) ein. Beispiel:rm @%mytable/myobject/;
Entfernen Sie nicht das Verzeichnis
worksheet_data
im Snowflake-Benutzer-Stagingbereich. Die klassische Weboberfläche speichert Metadaten für Arbeitsblätter auf der Registerkarte Worksheets in diesem Verzeichnis. Durch das Entfernen des Verzeichnisses wird der Zugriff auf die Arbeitsblätter entfernt, die nicht wiederhergestellt werden können.Diese Vorsichtsmaßnahme gilt nicht für Arbeitsblätter in Snowsight, die an anderer Stelle gespeichert werden und nicht anfällig für versehentliches Löschen sind.
Wenn eine REMOVE-Anweisung unterbrochen wird, bevor die Ausführung abgeschlossen ist, werden alle Dateien, die bereits aus der Anweisung entfernt wurden, nicht wiederhergestellt.
Beispiele¶
Entfernen aller Dateien aus dem path1/subpath2
-Pfad eines internen oder externen Stagingbereichs mit dem Namen mystage
:
REMOVE @mystage/path1/subpath2;
Entfernen Sie für die Tabelle orders
alle Dateien aus dem Stagingbereich:
REMOVE @%orders;
Verwenden Sie die Kurzform des Befehls, um Dateien, deren Namen dem Muster *jun*
entsprechen, aus dem Stagingbereich des aktuellen Benutzers zu entfernen:
RM @~ pattern='.*jun.*';