Entladen in Amazon S3

Wenn Sie bereits ein Amazon Web Services (AWS)-Konto haben und S3-Buckets zur Speicherung und Verwaltung Ihrer Datendateien verwenden, können Sie beim Entladen von Daten aus Snowflake-Tabellen Ihre vorhandenen Buckets und Ordnerpfade verwenden. Unter diesem Thema wird beschrieben, wie Sie mit dem Befehl COPY Daten aus einer Tabelle in einen Amazon S3-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 S3-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 S3-Buckets zu kopieren. Geben Sie im Befehl ein benanntes externes Stagingobjekt an, das auf den S3-Bucket verweist (empfohlen), oder wählen Sie aus, dass die Daten direkt in den Bucket entladen werden, indem Sie die URI und entweder die Speicherintegration oder die Sicherheitsanmeldeinformationen (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. Das Warehouse stellt die Computeressourcen zur Verfügung, um Zeilen aus der Tabelle zu schreiben.

Schritt 2:

Verwenden Sie die von Amazon bereitgestellten Schnittstellen/Tools, um die Dateien aus dem S3-Bucket herunterzuladen.

Unloading data to S3

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:

Konfigurieren eines S3-Buckets für das Entladen von Daten

In Snowflake sind folgende Berechtigungen für einen S3-Bucket und S3-Ordner erforderlich, um neue Dateien im Ordner (und allen Unterordnern) zu erstellen:

  • s3:DeleteObject

  • s3:PutObject

Als bewährte Methode empfiehlt Snowflake, ein Speicherintegrationsobjekt zu konfigurieren, um die Authentifizierungsverantwortung für externen Cloudspeicher an eine Snowflake-Entität für Identitäts- und Zugriffsverwaltung (IAM) zu delegieren.

Weitere Informationen zur Konfiguration finden Sie unter Konfigurieren des sicheren Zugriffs auf Amazon S3.

Entladen von Daten in einen externen Stagingbereich

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:

Weboberfläche

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

SQL

CREATE STAGE

Erstellen eines benannten Stagingbereichs

Im folgenden Beispiel wird ein externer Stagingbereich namens my_ext_unload_stage mithilfe eines S3-Buckets namens unload mit einem Ordnerpfad namens files erstellt. Der Stagingbereich greift über eine vorhandene Speicherintegration mit dem Namen s3_int auf den S3-Bucket zu.

Der Stagingbereich verweist auf das benannte Dateiformatobjekt namens my_csv_unload_format, das in Vorbereiten des Entladens von Daten erstellt wurde:

CREATE OR REPLACE STAGE my_ext_unload_stage URL='s3://unload/files/'
    STORAGE_INTEGRATION = s3_int
    FILE_FORMAT = my_csv_unload_format;

Entladen von Daten in den benannten Stagingbereich

  1. Verwenden Sie den Befehl COPY INTO <Speicherort>, um Daten aus einer Tabelle über einen externen Stagingbereich in einen S3-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 S3-Buckets zu entladen. Alle Dateien erhalten das Dateinamen-Präfix d1:

    COPY INTO @my_ext_unload_stage/d1 from mytable;
    
  2. Verwenden Sie die S3-Konsole (oder eine ähnliche Clientanwendung), um die Objekte (d. h. die durch den Befehl generierten Dateien) aus dem Bucket abzurufen.

Entladen von Daten direkt in einen S3-Bucket

  1. Verwenden Sie den Befehl COPY INTO <Speicherort>, um Daten aus einer Tabelle direkt in einen angegebenen S3-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 COPY den URI für den S3-Bucket und die Speicherintegration oder Anmeldeinformationen für den Zugriff auf den Bucket angeben.

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

    COPY INTO s3://mybucket/unload/ from mytable storage_integration = s3_int;
    

    Bemerkung

    In diesem Beispiel wird mithilfe einer referenzierten Speicherintegration namens s3_int auf den referenzierten S3-Bucket zugegriffen.

  2. Verwenden Sie die S3-Konsole (oder eine ähnliche Clientanwendung), um die Objekte (d. h. die durch den Befehl generierten Dateien) aus dem Bucket abzurufen.