Auswahl eines internen Stagingbereichs für lokale Dateien

Ein Stagingbereich gibt an, wo Datendateien gespeichert (d. h. „bereitgestellt“) werden, damit die Daten in den Dateien in eine Tabelle geladen werden können.

Unter diesem Thema:

Typen interner Stagingbereiche

Snowflake unterstützt die folgenden Typen von internen Stagingbereichen:

  • Benutzer

  • Tabelle

  • Benannt

Standardmäßig wird jedem Benutzer und jeder Tabelle in Snowflake automatisch ein interner Stagingbereich für die Bereitstellung der zu ladenden Datendateien zugewiesen. Darüber hinaus können Sie benannte interne Stagingbereiche anlegen.

Dateibereitstellungsinformationen werden in beiden Schritten des Datenladeprozesses benötigt:

  1. Sie müssen im Befehl PUT einen internen Stagingbereich angeben, wenn Sie Dateien in Snowflake hochladen.

  2. Sie müssen den gleichen Stagingbereich im Befehl COPY INTO <Tabelle> angeben, wenn Sie Daten aus den bereitgestellten Dateien in eine Tabelle laden.

Wählen Sie die passende Stagingart für spezifische Datendateien. Jede Option bietet Vor- und Nachteile.

Benutzer-Stagingbereiche

Jedem Benutzer ist standardmäßig ein Snowflake-Stagingbereich zum Speichern von Dateien zugeordnet. Dieser Stagingbereich ist eine praktische Option, wenn Ihre Dateien nur von einem einzigen Benutzer verwendet werden sollen, aber in mehrere Tabellen kopiert werden müssen.

Benutzer-Stagingbereiche haben die folgenden Eigenschaften und Einschränkungen:

  • Benutzer-Stagingbereiche werden mit @~ referenziert. Verwenden Sie beispielsweise LIST @~, um die Dateien eines Benutzer-Stagingbereichs aufzulisten.

  • Im Gegensatz zu benannten Stagingbereichen können Benutzer-Stagingbereiche nicht geändert oder gelöscht werden.

  • Benutzer-Stagingbereiche bieten keine Unterstützung für das Einstellen von Dateiformatoptionen. Stattdessen müssen Sie das Dateiformat und die Kopieroptionen als Teil des Befehls COPY INTO <Tabelle> angeben.

Diese Option ist in folgenden Fällen nicht sinnvoll:

  • Mehrere Benutzer benötigen Zugriff auf die Dateien.

  • Der aktuelle Benutzer hat keine INSERT-Berechtigungen für die Tabellen, in die die Daten geladen werden.

Tabellen-Stagingbereiche

Bemerkung

Apache Iceberg™-Tabellen in Snowflake unterstützen keine Tabellen-Stagingbereiche.

Jeder Tabelle ist standardmäßig ein Snowflake-Stagingbereich zum Speichern von Dateien zugeordnet. Dieser Stagingbereich wird als Tabellen-Stagingbereich bezeichnet.

Sie könnten einen Tabellen-Stagingbereich verwenden, wenn Sie nur Dateien in eine einzige Tabelle kopieren müssen, die Dateien aber mehreren Benutzer zugänglich machen möchten.

Tabellen-Stagingbereiche haben folgende Eigenschaften und Einschränkungen:

  • Ein Tabellen-Stagingbereich hat den gleichen Namen wie die Tabelle. Eine Tabelle mit dem Namen mytable hat zum Beispiel einen Stagingbereich, auf den mit @%mytable verwiesen wird.

  • Ein Tabellen-Stagingbereich ist ein impliziter Stagingbereich, der an ein Tabellenobjekt gebunden ist. Es handelt sich nicht um ein separates Datenbankobjekt. Ein Tabellen-Stagingbereich hat keine eigenen zuweisbaren Berechtigungen. Ein Tabellen-Stagingbereich ist auch nicht geeignet, wenn Sie die Dateidaten in mehrere Tabellen kopieren müssen.

  • Um Dateien in einem Tabellen-Stagingbereich bereitzustellen oder die Dateien im Stagingbereich aufzulisten, abzufragen oder zu löschen, müssen Sie der Eigentümer der Tabelle sein (die Rolle mit der Berechtigung OWNERSHIP für die Tabelle).

  • Im Gegensatz zu einem benannten Stagingbereich können Sie einen Tabellen-Stagingbereich nicht ändern oder löschen.

  • Tabellen-Stagingbereiche bieten keine Unterstützung für das Umwandeln von Daten beim Laden (d. h. Verwenden einer Abfrage als Quelle für den COPY-Befehl).

Benannte Stagingbereiche

Benannte Stagingbereiche sind benannte Datenbankobjekte, die ein Höchstmaß an Flexibilität beim Entladen von Daten bieten.

  • Benutzer mit den entsprechenden Berechtigungen für den Stagingbereich können Daten in eine beliebige Tabelle laden.

  • Da der Stagingbereich ein Datenbankobjekte ist, gelten die Sicherheits-/Zugriffsregeln, die für alle Objekte gelten: Die Berechtigungen zum Verwenden eines Stagingbereichs kann über Rollen erteilt oder entzogen werden. Darüber hinaus kann die Eigentümerschaft an einem Stagingbereich auf eine andere Rolle übertragen werden.

Wenn Sie planen, Datendateien bereitzustellen, die nur von Ihnen selbst oder nur in eine einzelne Tabelle geladen werden, dann können Sie auch einfach entweder Ihren Benutzer-Stagingbereich oder den Stagingbereich der Tabelle verwenden, in die Sie Daten laden werden.

Benannte Stagingbereiche sind optional, werden aber empfohlen, wenn Sie regelmäßige Datenladeoperationen planen, die mehrere Benutzer und/oder Tabellen betreffen können. Anweisungen zum Erstellen eines benannten Stagingbereichs finden Sie unter Erstellen eines benannten Stagingbereichs.

Erstellen eines benannten Stagingbereichs

Sie können einen benannten internen Stagingbereich entweder mit SQL oder über die Weboberfläche erstellen.

Bemerkung

Um einen internen Stagingbereich zu erstellen, müssen Sie eine Rolle verwenden, die über die erforderlichen Berechtigungen verfügt oder diese erbt. Weitere Informationen zu CREATE STAGE finden Sie unter Anforderungen an die Zugriffssteuerung.

Benannten Stagingbereich mit SQL erstellen

Verwenden Sie den Befehl CREATE STAGE, um einen benannten Stagingbereich mit SQL zu erstellen.

Im folgenden Beispiel wird ein interner Stagingbereich erstellt, der eine serverseitige Verschlüsselung verwendet.

CREATE STAGE my_int_stage
  ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Copy

Benannten Stagingbereich mit Snowsight erstellen

Um mit Snowsight einen benannten internen Stagingbereich zu erstellen, gehen Sie wie folgt vor:

  1. Melden Sie sich bei Snowsight an.

  2. Wählen Sie im Navigationsmenü die Option Create » Stage » Snowflake Managed aus.

  3. Geben Sie im Dialogfeld Create Stage unter Stage Name einen Namen ein.

  4. Wählen Sie die Datenbank und das Schema aus, in dem Sie den Stagingbereich erstellen möchten.

  5. Optional können Sie Directory table deaktivieren. Verzeichnistabellen ermöglichen das Anzeigen von Dateien im Stagingbereich, erfordern jedoch ein Warehouse und sind daher mit Kosten verbunden. Sie können diese Option vorerst deaktivieren und eine Verzeichnistabelle später aktivieren.

  6. Wählen Sie unter Encryption den Typ der Verschlüsselung aus, der für alle in Ihrem Stagingbereich gespeicherten Dateien unterstützt wird. Weitere Informationen dazu finden Sie unter Verschlüsselung für interne Stagingbereiche. Sie können die Art der Verschlüsselung nicht mehr ändern, nachdem Sie den Stagingbereich erstellt haben.

    Bemerkung

    Um den Datenzugriff zu ermöglichen, verwenden Sie eine serverseitige Verschlüsselung. Andernfalls werden Stagingdateien standardmäßig clientseitig verschlüsselt und sind beim Herunterladen nicht lesbar. Weitere Informationen dazu finden Sie unter Serverseitige Verschlüsselung für Zugriff auf unstrukturierte Daten.

  7. Füllen Sie die Felder zur Beschreibung Ihres Stagingbereichs aus. Weitere Informationen dazu finden Sie unter CREATE STAGE.

  8. Wählen Sie Create aus.

Benannten Stagingbereich mit der klassischen Konsole erstellen

Wählen Sie Databases Registerkarte „Datenbanken“ » <DB-Name> » Stages aus.

Nächstes Thema: Staging von Datendateien aus einem lokalen Dateisystem