Entladen in einen Snowflake-Stagingbereich

Unter diesem Thema wird beschrieben, wie Sie mit dem Befehl COPY Daten aus einer Tabelle in einen interne Stagingbereich (z. B. von Snowflake) 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. 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.

Unloading data to a Snowflake stage

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:

Weboberfläche

Klicken Sie auf Databases Databases tab » <DB-Name> » Stages

SQL

CREATE STAGE

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

  1. 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äfix unload/, 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.

  2. 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 |
    +----------------------------------+------+----------------------------------+-------------------------------+
    
  3. 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

  1. 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äfix unload/, 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.

  2. 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 |
    +-----------------------+------+----------------------------------+-------------------------------+
    
  3. 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 Ihrem Benutzer-Stagingbereich

  1. 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äfix unload/, 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.

  2. 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 |
    +-----------------------+------+----------------------------------+-------------------------------+
    
  3. 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.