Entladen nach Microsoft Azure

Wenn Sie bereits ein Microsoft Azure-Konto haben und Azure-Container zum Speichern und Verwalten Ihrer Dateien verwenden, können Sie beim Entladen von Daten aus Snowflake-Tabellen Ihre vorhandenen Container und Ordnerpfade verwenden. Unter diesem Thema wird beschrieben, wie Sie mit dem Befehl COPY Daten aus einer Tabelle in einen Azure-Container entladen. Sie können die entladenen Datendateien dann in Ihr lokales Dateisystem herunterladen.

Snowflake unterstützt die folgenden Typen von Blob-Speicherkonten:

  • Blob-Speicher

  • Data Lake Storage Gen2

  • General Purpose v1

  • General Purpose v2

Snowflake unterstützt nicht Data Lake Storage Gen1.

Wie in der folgenden Abbildung dargestellt, erfolgt das Entladen von Daten in einen Azure-Container 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 Azure-Container-Buckets zu kopieren. Geben Sie im Befehl ein benanntes externes Stagingobjekt an, das auf den Azure-Container verweist (empfohlen), oder wählen Sie aus, dass die Daten direkt in den Container entladen werden, indem Sie die URI- und Sicherheitsanmeldeinformationen (falls erforderlich) für den Container 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 Microsoft bereitgestellten Schnittstellen/Tools, um die Dateien aus dem Azure-Container herunterzuladen.

Unloading data to Azure

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:

Zulassen der Subnetz-IDs für das Azure Virtual Network

Wenn ein Azure-Administrator Ihrer Organisation Snowflake nicht explizit Zugriff auf Ihr Azure-Speicherkonto gewährt hat, können Sie dies jetzt tun. Führen Sie die Schritte aus, die in der Anleitung zur Konfiguration des Datenladens unter Zulassen von VNet-Subnetze-IDs beschrieben sind.

Konfigurieren eines Azure-Containers für das Entladen von Daten

Damit Snowflake in einen Azure-Container schreiben kann, müssen Sie den Zugriff auf Ihr Speicherkonto konfigurieren. Eine Anleitung dazu finden Sie unter Konfigurieren eines Azure-Containers zum Laden von Daten. Beachten Sie, dass wir einen einzigen Satz von Anweisungen zur Verfügung stellen, die die spezifischen Berechtigungen für das Laden oder Entladen von Daten angeben.

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:

Classic Console

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

SQL

CREATE STAGE

Erstellen eines benannten Stagingbereichs

Im folgenden Beispiel wird ein externer Stagingbereich my_ext_unload_stage mit einem Container mycontainer und einem Ordnerpfad unload erstellt. 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='azure://myaccount.blob.core.windows.net/mycontainer/unload'
  CREDENTIALS=(AZURE_SAS_TOKEN='?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')
  ENCRYPTION=(TYPE='AZURE_CSE' MASTER_KEY = 'kPxX0jzYfIamtnJEUTHwq80Au6NbSgPH5r4BDDwOaO8=')
  FILE_FORMAT = my_csv_unload_format;
Copy

Bemerkung

Verwenden Sie den Endpunkt blob.core.windows.net für alle unterstützten Typen von Azure-Blob-Speicherkonten, einschließlich Data Lake Storage Gen2.

Beachten Sie, dass die in diesem Beispiel verwendeten Werte AZURE_SAS_TOKEN und MASTER_KEY nur zur Veranschaulichung dienen.

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 Azure-Container 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 Azure-Containers 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 Azure bereitgestellten Tools, um die Objekte (d. h. die durch den Befehl generierten Dateien) aus dem Container abzurufen.

Entladen von Daten direkt in einen Azure-Container

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

    Sie müssen im Befehl COPY die URI für den Azure-Container und die Sicherheitsanmeldeinformationen für den Zugriff auf den Container angeben.

    Im folgenden Beispiel werden alle Zeilen der Tabelle mytable in eine oder mehrere Dateien in einem Azure-Container mit dem Ordnerpfadpräfix unload/ entladen:

    Dieses Beispiel verweist auf eine Speicherintegration, die mit CREATE STORAGE INTEGRATION von einem Kontoadministrator (d. h. einem Benutzer mit der Rolle ACCOUNTADMIN) oder einer Rolle mit der globalen Berechtigung CREATE INTEGRATION erstellt wurde. Bei Verwendung einer Speicherintegration benötigen Benutzer für den Zugriff auf einen privaten Speicherort keine Anmeldeinformationen mehr:

    COPY INTO 'azure://myaccount.blob.core.windows.net/mycontainer/unload/' FROM mytable STORAGE_INTEGRATION = myint;
    
    Copy
  2. Verwenden Sie die Azure-Konsole (oder eine ähnliche Clientanwendung), um die Objekte (d. h. die durch den Befehl generierten Dateien) aus dem Container abzurufen.