Entladen in einen Snowflake-Stagingbereich¶
Dieser Themenkomplex beschreibt, wie Sie mit dem COPY-Befehl Daten aus einer Tabelle in einen interne (d. h. Snowflake) Stagingbereich entladen. Sie können die entladenen Datendateien dann in Ihr lokales Dateisystem herunterladen.
Wie in der folgenden Abbildung dargestellt, erfolgt das Entladen von Daten in ein lokales Dateisystem in zwei separaten Schritten:
- Schritt 1::
Verwenden Sie den Befehl COPY INTO <Speicherort>, um die Daten aus der Snowflake-Datenbanktabelle in eine oder mehrere Dateien eines Snowflake-Stagingbereichs zu kopieren. Geben Sie in der SQL-Anweisung den Stagingbereich (benannter Stagingbereich oder Tabellen-/Benutzer-Stagingbereich) an, in den die Dateien geschrieben werden sollen.
Unabhängig davon, welchen Stagingbereich Sie verwenden, erfordert dieser Schritt ein aktives, aktuelles virtuelles Warehouse für die Sitzung, wenn Sie den Befehl manuell oder aus einem Skript heraus ausführen. Das Warehouse stellt die Computeressourcen zur Verfügung, um Zeilen aus der Tabelle zu schreiben.
- Schritt 2::
Verwenden Sie den Befehl GET, um die Datendateien in Ihr lokales Dateisystem herunterzuladen.
Tipp
Die unter diesem Thema bereitgestellten Anleitungen gehen davon aus, dass Sie Vorbereiten des Entladens von Daten gelesen und ggf. ein benanntes Dateiformat erstellt haben.
Bevor Sie beginnen, sollten Sie vielleicht auch Hinweise zum Entladen von Daten für bewährte Verfahren, Tipps und andere Hinweise lesen.
Unter diesem Thema:
Entladen der Daten¶
In diesem Abschnitt finden Sie eine Anleitung zum Entladen von Tabellendaten in einen internen, benannten Stagingbereich, einen Tabellen-Stagingbereich oder einen Benutzer-Stagingbereich.
Entladen von Daten in einen internen, benannten Stagingbereich¶
Interne Stagingbereiche sind benannte Datenbankobjekte, die ein Höchstmaß an Flexibilität beim Entladen von Daten bieten. Da es sich um Datenbankobjekte handelt, können Berechtigungen für benannte Stagingbereiche jeder Rolle zugewiesen werden.
Sie können einen internen Stagingbereich entweder über die Weboberfläche oder mit SQL erstellen:
- Classic Console:
- SQL:
Erstellen eines benannten Stagingbereichs¶
Im folgenden Beispiel wird ein interner Stagingbereich erstellt, der auf das benannte Dateiformatobjekt namens my_csv_unload_format
verweist, das in Vorbereiten des Entladens von Daten erstellt wurde:
CREATE OR REPLACE STAGE my_unload_stage FILE_FORMAT = my_csv_unload_format;
Entladen von Daten in den benannten Stagingbereich¶
Verwenden Sie den Befehl COPY INTO <Speicherort>, um alle Zeilen einer Tabelle in eine oder mehrere Dateien des Stagingbereichs
my_csv_unload_format
zu entladen. Die Anweisung ergänzt die Namen der entladenen Dateien um das Präfixunload/
, um die Dateien im Stagingbereich zu organisieren:Beispiel:
COPY INTO @mystage/unload/ from mytable;
Beachten Sie, dass das
@
-Zeichen selbst einen benannten Stagingbereich identifiziert.Bemerkung
Da die Dateiformatoptionen für den Stagingbereich definiert wurden, ist es nicht notwendig, die gleichen Dateiformatoptionen im Befehl COPY anzugeben.
Verwenden Sie den Befehl LIST, um eine Liste der Dateien anzuzeigen, die in den Stagingbereich entladen wurden:
LIST @mystage; +----------------------------------+------+----------------------------------+-------------------------------+ | name | size | md5 | last_modified | |----------------------------------+------+----------------------------------+-------------------------------| | mystage/unload/data_0_0_0.csv.gz | 112 | 6f77daba007a643bdff4eae10de5bed3 | Mon, 11 Sep 2017 18:13:07 GMT | +----------------------------------+------+----------------------------------+-------------------------------+
Verwenden Sie den Befehl GET, um die generierten Dateien aus dem Tabellen-Stagingbereich in das lokale Dateisystem Ihres Computers herunterzuladen. Im folgenden Beispiel werden die Dateien in das Verzeichnis
data/unload
heruntergeladen:Beispiel:
Linux oder macOS:
GET @mystage/unload/data_0_0_0.csv.gz file:///data/unload;
Windows:
GET @mystage/unload/data_0_0_0.csv.gz file://C:\data\unload;
Entladen von Daten in einen Tabellen-Stagingbereich¶
Verwenden Sie den Befehl COPY INTO <Speicherort>, um alle Zeilen einer Tabelle in eine oder mehrere Dateien des Stagingbereichs der Tabelle zu entladen. Im folgenden Beispiel werden Datendateien in den Stagingbereich unter Verwendung des benannten Dateiformats
my_csv_unload_format
entladen, das in Vorbereiten des Entladens von Daten erstellt wurde. Die Anweisung ergänzt die Namen der entladenen Dateien um das Präfixunload/
, um die Dateien im Stagingbereich zu organisieren:Beispiel:
COPY INTO @%mytable/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
Beachten Sie, dass mit der Zeichenkombination
@%
ein Tabellen-Stagingbereich identifiziert wird.Verwenden Sie den Befehl LIST, um eine Liste der Dateien anzuzeigen, die in den Stagingbereich entladen wurden:
LIST @%mytable; +-----------------------+------+----------------------------------+-------------------------------+ | name | size | md5 | last_modified | |-----------------------+------+----------------------------------+-------------------------------| | unload/data_0_0_0.csv | 96 | 29918f18bcb35e7b6b628ca41024236c | Mon, 11 Sep 2017 17:45:20 GMT | +-----------------------+------+----------------------------------+-------------------------------+
Verwenden Sie den Befehl GET, um die generierten Dateien aus dem Tabellen-Stagingbereich in das lokale Dateisystem Ihres Computers herunterzuladen. Im folgenden Beispiel werden die Dateien in das Verzeichnis
data/unload
heruntergeladen:Beispiel:
Linux oder macOS:
GET @%mytable/unload/data_0_0_0.csv file:///data/unload;
Windows:
GET @%mytable/unload/data_0_0_0.csv file://C:\data\unload;
Entladen von Daten in Ihren Benutzer-Stagingbereich¶
Verwenden Sie den Befehl COPY INTO <Speicherort>, um alle Zeilen einer Tabelle in eine oder mehrere Dateien Ihres Stagingbereichs zu entladen. Im folgenden Beispiel werden Datendateien in Ihren Benutzer-Stagingbereich unter Verwendung des benannten Dateiformats
my_csv_unload_format
entladen, das in Vorbereiten des Entladens von Daten erstellt wurde. Die Anweisung ergänzt die Namen der entladenen Dateien um das Präfixunload/
, um die Dateien im Stagingbereich zu organisieren:Beispiel:
COPY INTO @~/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
Beachten Sie, dass mit der Zeichenkombination
@~
ein Benutzer-Stagingbereich identifiziert wird.Verwenden Sie den Befehl LIST, um eine Liste der Dateien anzuzeigen, die in den Stagingbereich entladen wurden:
LIST @~; +-----------------------+------+----------------------------------+-------------------------------+ | name | size | md5 | last_modified | |-----------------------+------+----------------------------------+-------------------------------| | unload/data_0_0_0.csv | 96 | 94a306c55733b95a0887511ff355936b | Mon, 11 Sep 2017 17:25:07 GMT | +-----------------------+------+----------------------------------+-------------------------------+
Verwenden Sie den Befehl GET, um die generierten Dateien aus Ihrem Stagingbereich in das lokale Dateisystem Ihres Computers herunterzuladen. Im folgenden Beispiel werden die Dateien in das Verzeichnis
data/unload
heruntergeladen:Beispiel:
Linux oder macOS:
GET @~/unload/data_0_0_0.csv file:///data/unload;
Windows:
GET @~/unload/data_0_0_0.csv file://C:\data\unload;
Verwalten entladener Datendateien¶
Bereitgestellte Dateien können nach Abschluss der Aufgabe aus dem Snowflake-Stagingbereich gelöscht werden, indem Sie den Befehl REMOVE zum Entfernen von Dateien im Stagingbereich verwenden.
Das Entfernen von Dateien verbessert die Leistung beim Laden von Daten, da es die Anzahl der Dateien reduziert, die der Befehl COPY INTO <Tabelle> scannen muss, um zu überprüfen, ob im Stagingbereich vorhandene Dateien bereits geladen wurden.