Unload into Google Cloud Storage

Wenn Sie bereits ein Google Cloud Storage-Konto haben und Cloud Storage-Container für die Speicherung und Verwaltung Ihrer Dateien verwenden, können Sie Ihre vorhandenen Buckets und Ordnerpfade für das Entladen von Daten aus Snowflake-Tabellen verwenden. Unter diesem Thema wird beschrieben, wie Sie mit dem Befehl COPY Daten aus einer Tabelle in einen Cloud Storage-Bucket 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 einen Cloud Storage-Bucket in zwei Schritten:

Schritt 1::

Verwenden Sie den Befehl COPY INTO <Speicherort>, um die Daten aus der Snowflake-Datenbanktabelle in eine oder mehrere Dateien eines Cloud Storage-Buckets zu kopieren. Geben Sie im Befehl ein benanntes externes Stagingobjekt an, das auf den Cloud Storage-Bucket verweist (empfohlen), oder wählen Sie aus, dass die Daten direkt in den Bucket entladen werden, indem Sie die URI und die Speicherintegration (falls erforderlich) für den Bucket angeben.

Unabhängig davon, welche Methode 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 die von Google bereitgestellten Schnittstellen/Tools, um die Dateien aus dem Cloud Storage-Bucket herunterzuladen.

Entladen von Daten in Cloud Storage

Tipp

Die unter diesem Thema bereitgestellten Anleitungen gehen davon aus, dass Sie File formats to unload data 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.

Configure Cloud Storage for unloading data

Um in Snowflake in einen Cloud Storage-Bucket zu schreiben, müssen Sie ein Speicherintegrationsobjekt konfigurieren, damit die Authentifizierungsverantwortung für den externen Cloudspeicher an eine Snowflake-Entität der Identitäts- und Zugriffsverwaltung (IAM) zu delegieren.

Weitere Informationen zur Konfiguration finden Sie unter Configure an integration for Google Cloud Storage.

Unload data into an external stage

Externe 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 externen benannten Stagingbereich entweder über die Weboberfläche oder mit SQL erstellen:

Snowsight:

Wählen Sie im Navigationsmenü die Option Catalog » Database Explorer aus. Wählen Sie dann <db_name> » Stages aus.

SQL:

CREATE STAGE

Create a named stage

Snowflake verwendet beim Hochladen auf Amazon S3 und Google Cloud Storage mehrteilige Uploads. Bei diesem Prozess kann es zu unvollständigen Uploads im Speicherort Ihres externen Stagingbereichs kommen.

Um zu verhindern, dass sich unvollständige Uploads ansammeln, empfehlen wir Ihnen, eine Lebenszyklusregel festzulegen. Eine Anleitung dazu finden Sie in der Dokumentation Amazon S3 oder Google Cloud Storage.

Im folgenden Beispiel wird ein externer Stagingbereich namens my_ext_unload_stage mit einem Ordnerpfad namens unload erstellt. Der Stagingbereich verweist auf folgende Objekte:

  • Eine benannte Speicherintegration mit dem Namen gcs_int. Anleitungen dazu finden Sie unter Configure an integration for Google Cloud Storage.

  • Ein benanntes Dateiformat namens my_csv_unload_format. Anleitungen dazu finden Sie unter File formats to unload data.

    CREATE OR REPLACE STAGE my_ext_unload_stage
      URL='gcs://mybucket/unload'
      STORAGE_INTEGRATION = gcs_int
      FILE_FORMAT = my_csv_unload_format;
    
    Copy

Unload data to the named stage

  1. Verwenden Sie den Befehl COPY INTO <Speicherort>, um Daten aus einer Tabelle über einen externen Stagingbereich in einen Cloud Storage-Bucket zu entladen.

    Im folgenden Beispiel wird der Stagingbereich my_ext_unload_stage verwendet, um alle Zeilen der Tabelle mytable in eine oder mehrere Dateien des Cloud Storage-Buckets zu entladen. Alle Dateien erhalten das Dateinamen-Präfix d1:

    COPY INTO @my_ext_unload_stage/d1
    FROM mytable;
    
    Copy
  2. Verwenden Sie die von Cloud Storage bereitgestellten Tools, um die Objekte (d. h. die durch den Befehl generierten Dateien) aus dem Bucket abzurufen.

Unload data directly into a Cloud Storage bucket

  1. Verwenden Sie den Befehl COPY INTO <Speicherort>, um Daten aus einer Tabelle direkt in einen angegebenen Cloud Storage-Bucket zu entladen. Diese Option eignet sich gut für die Ad-hoc-Entladung, wenn Sie keine regelmäßige Datenentladung mit den gleichen Tabellen- und Bucketparametern planen.

    Sie müssen im Befehl die URI des Cloud Storage-Buckets und die Speicherintegration für den Zugriff auf den Bucket angeben.

    Im folgenden Beispiel werden alle Zeilen der Tabelle mytable in eine oder mehrere Dateien des Cloud Storage-Buckets mit dem Ordnerpfadpräfix unload/ entladen:

    COPY INTO 'gcs://mybucket/unload/'
      FROM mytable
      STORAGE_INTEGRATION = gcs_int;
    
    Copy
  2. Verwenden Sie die Cloud Storage-Konsole (oder eine ähnliche Clientanwendung), um die Objekte (d. h. die durch den Befehl generierten Dateien) aus dem Bucket abzurufen.