CREATE ICEBERG TABLE

Erstellt eine neue Iceberg-Tabelle im aktuellen/angegebenen Schema oder ersetzt eine bestehende Iceberg-Tabelle. Iceberg-Tabellen kombinieren Features, die in Snowflake-Tabellen standardmäßig enthalten sind, wie z. B. schnelle SQL-Verarbeitung, Sicherheit und Autorisierung sowie Data Governance mit offenen Apache Iceberg-Metadaten und -Speichern.

Darüber hinaus unterstützt dieser Befehl die folgenden Varianten für Iceberg-Tabellen, die Snowflake als Katalog verwenden:

  • CREATE ICEBERG TABLE … AS SELECT (erstellt eine ausgefüllte Tabelle; auch als CTAS bezeichnet)

  • CREATE ICEBERG TABLE … LIKE (erstellt eine leere Kopie einer bestehenden Tabelle)

Unter diesem Thema werden Iceberg-Tabellen einfach als „Tabellen“ bezeichnet, es sei denn, die Angabe von Iceberg-Tabellen vermeidet Verwechslungen.

Bemerkung

Bevor Sie eine Tabelle erstellen, müssen Sie das externe Volume erstellen, auf dem die Iceberg-Metadaten und -Datendateien gespeichert werden. Eine Anleitung dazu finden Sie unter Konfigurieren eines externen Volumes für Iceberg-Tabellen.

Wenn Sie einen externen Iceberg-Katalog oder gar keinen Katalog verwenden, müssen Sie außerdem eine Katalogintegration für die Tabelle erstellen. Weitere Informationen dazu finden Sie unter Katalogintegration für Iceberg-Tabellen konfigurieren.

Siehe auch:

ALTER ICEBERG TABLE, DROP ICEBERG TABLE, SHOW ICEBERG TABLES, DESCRIBE ICEBERG TABLE

Unter diesem Thema:

Syntax

Snowflake als Iceberg-Katalog

-- Snowflake as the Iceberg catalog
CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name> (
    -- Column definition
    <col_name> <col_type>
      [ inlineConstraint ]
      [ NOT NULL ]
      [ COLLATE '<collation_specification>' ]
      [ { DEFAULT <expr>
          | { AUTOINCREMENT | IDENTITY }
            [ { ( <start_num> , <step_num> )
                | START <num> INCREMENT <num>
              } ]
        } ]
      [ [ WITH ] MASKING POLICY <policy_name> [ USING ( <col_name> , <cond_col1> , ... ) ] ]
      [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
      [ COMMENT '<string_literal>' ]

    -- Additional column definitions
    [ , <col_name> <col_type> [ ... ] ]

    -- Out-of-line constraints
    [ , outoflineConstraint [ ... ] ]
  )
  [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
  [ EXTERNAL_VOLUME = '<external_volume_name>' ]
  [ CATALOG = 'SNOWFLAKE' ]
  BASE_LOCATION = '<relative_path_from_external_volume>'
  [ STAGE_FILE_FORMAT = (
    { FORMAT_NAME = '<file_format_name>'
      | TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ]
    } ) ]
  [ STAGE_COPY_OPTIONS = ( copyOptions ) ]
  [ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
  [ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
  [ CHANGE_TRACKING = { TRUE | FALSE } ]
  [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
  [ COPY GRANTS ]
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , <col_name> ... ] ) ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

Wobei:

inlineConstraint ::=
  [ CONSTRAINT <constraint_name> ]
  { UNIQUE
    | PRIMARY KEY
    | [ FOREIGN KEY ] REFERENCES <ref_table_name> [ ( <ref_col_name> ) ]
  }
  [ <constraint_properties> ]
Copy

Weitere Details zu Inline-Einschränkungen finden Sie unter CREATE | ALTER TABLE … CONSTRAINT.

outoflineConstraint ::=
  [ CONSTRAINT <constraint_name> ]
  { UNIQUE [ ( <col_name> [ , <col_name> , ... ] ) ]
    | PRIMARY KEY [ ( <col_name> [ , <col_name> , ... ] ) ]
    | [ FOREIGN KEY ] [ ( <col_name> [ , <col_name> , ... ] ) ]
      REFERENCES <ref_table_name> [ ( <ref_col_name> [ , <ref_col_name> , ... ] ) ]
  }
  [ <constraint_properties> ]
Copy

Weitere Details zu Out-of-Line-Einschränkungen finden Sie unter CREATE | ALTER TABLE … CONSTRAINT.

formatTypeOptions ::=
-- If TYPE = CSV
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     RECORD_DELIMITER = '<character>' | NONE
     FIELD_DELIMITER = '<character>' | NONE
     FILE_EXTENSION = '<string>'
     PARSE_HEADER = TRUE | FALSE
     SKIP_HEADER = <integer>
     SKIP_BLANK_LINES = TRUE | FALSE
     DATE_FORMAT = '<string>' | AUTO
     TIME_FORMAT = '<string>' | AUTO
     TIMESTAMP_FORMAT = '<string>' | AUTO
     BINARY_FORMAT = HEX | BASE64 | UTF8
     ESCAPE = '<character>' | NONE
     ESCAPE_UNENCLOSED_FIELD = '<character>' | NONE
     TRIM_SPACE = TRUE | FALSE
     FIELD_OPTIONALLY_ENCLOSED_BY = '<character>' | NONE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
     ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     EMPTY_FIELD_AS_NULL = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
     ENCODING = '<string>' | UTF8
-- If TYPE = JSON
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     DATE_FORMAT = '<string>' | AUTO
     TIME_FORMAT = '<string>' | AUTO
     TIMESTAMP_FORMAT = '<string>' | AUTO
     BINARY_FORMAT = HEX | BASE64 | UTF8
     TRIM_SPACE = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
     FILE_EXTENSION = '<string>'
     ENABLE_OCTAL = TRUE | FALSE
     ALLOW_DUPLICATE = TRUE | FALSE
     STRIP_OUTER_ARRAY = TRUE | FALSE
     STRIP_NULL_VALUES = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     IGNORE_UTF8_ERRORS = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
-- If TYPE = AVRO
     COMPRESSION = AUTO | GZIP | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     TRIM_SPACE = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = ORC
     TRIM_SPACE = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = PARQUET
     COMPRESSION = AUTO | LZO | SNAPPY | NONE
     SNAPPY_COMPRESSION = TRUE | FALSE
     BINARY_AS_TEXT = TRUE | FALSE
     USE_LOGICAL_TYPE = TRUE | FALSE
     TRIM_SPACE = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If TYPE = XML
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     IGNORE_UTF8_ERRORS = TRUE | FALSE
     PRESERVE_SPACE = TRUE | FALSE
     STRIP_OUTER_ELEMENT = TRUE | FALSE
     DISABLE_SNOWFLAKE_DATA = TRUE | FALSE
     DISABLE_AUTO_CONVERT = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     SKIP_BYTE_ORDER_MARK = TRUE | FALSE
Copy
copyOptions ::=
     ON_ERROR = { CONTINUE | SKIP_FILE | SKIP_FILE_<num> | 'SKIP_FILE_<num>%' | ABORT_STATEMENT }
     SIZE_LIMIT = <num>
     PURGE = TRUE | FALSE
     RETURN_FAILED_ONLY = TRUE | FALSE
     MATCH_BY_COLUMN_NAME = CASE_SENSITIVE | CASE_INSENSITIVE | NONE
     ENFORCE_LENGTH = TRUE | FALSE
     TRUNCATECOLUMNS = TRUE | FALSE
     FORCE = TRUE | FALSE
Copy

Externer Iceberg-Katalog

-- External Iceberg catalog
CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name>
  [ EXTERNAL_VOLUME = '<external_volume_name>' ]
  [ CATALOG = '<catalog_integration_name>' ]
  externalCatalogParams
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

Wobei:

externalCatalogParams (for AWS Glue Data Catalog) ::=
  CATALOG_TABLE_NAME = '<catalog_table_name>'
  [ CATALOG_NAMESPACE = '<catalog_namespace>' ]
Copy
externalCatalogParams (for Iceberg files in object storage) ::=
  METADATA_FILE_PATH = '<metadata_file_path>'
Copy

Syntaxvariante

Die folgende Syntaxvariante wird für das Erstellen von Iceberg-Tabellen unterstützt, die Snowflake als Katalog verwenden.

CREATE TABLE … AS SELECT (auch als CTAS bezeichnet)

Erstellt eine neue Tabelle, die mit den von einer Abfrage zurückgegebenen Daten gefüllt ist:

CREATE [ OR REPLACE ] ICEBERG TABLE <table_name> [ ( <col_name> [ <col_type> ] , <col_name> [ <col_type> ] , ... ) ]
  [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
  [ COPY GRANTS ]
  AS SELECT <query>
  [ ... ]
Copy

Eine Maskierungsrichtlinie kann auf eine Spalte in einer CTAS-Anweisung angewendet werden. Geben Sie die Maskierungsrichtlinie nach dem Datentyp der Spalte an. In ähnlicher Weise kann eine Zeilenzugriffsrichtlinie auf die Tabelle angewendet werden. Beispiel:

CREATE ICEBERG TABLE <table_name> ( <col1> <data_type> [ WITH ] MASKING POLICY <policy_name> [ , ... ] )
  ...
  [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col1> [ , ... ] )
  AS SELECT <query>
  [ ... ]
Copy

Bemerkung

In einer CTAS-Anweisung ist die COPY GRANTS-Klausel nur gültig, wenn sie mit der OR REPLACE-Klausel kombiniert wird. COPY GRANTS kopiert Berechtigungen aus der Tabelle, die durch CREATE OR REPLACE ersetzt wird (falls bereits vorhanden), nicht aus den Quelltabellen, die in der SELECT-Anweisung abgefragt werden. CTAS mit COPY GRANTS ermöglicht das Überschreiben einer Tabelle mit einem neuen Datensatz unter Beibehaltung der für diese Tabelle bestehenden Berechtigungen.

Weitere Informationen zu COPY GRANTS finden Sie in diesem Dokument unter COPY GRANTS.

CREATE ICEBERG TABLE … LIKE

Erstellt eine neue Tabelle mit den gleichen Spaltendefinitionen wie eine bestehende Tabelle, wobei aber keine Daten aus der bestehenden Tabelle kopiert werden. Spaltennamen, Typen, Standardwerte und Einschränkungen werden in die neue Tabelle kopiert:

CREATE [ OR REPLACE ] ICEBERG TABLE <table_name> LIKE <source_table>
  [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
  [ COPY GRANTS ]
  [ ... ]
Copy

Weitere Informationen zu COPY GRANTS finden Sie in diesem Dokument unter COPY GRANTS.

Bemerkung

CREATE TABLE … LIKE für eine Tabelle mit einer Sequenz mit automatischer Inkrementierung, auf die über eine Datenfreigabe zugegriffen wird, wird derzeit nicht unterstützt.

Erforderliche Parameter

table_name

Gibt den Bezeichner (den Namen) für die Tabelle an. Dieser muss für das Schema, in dem die Tabelle erstellt wird, eindeutig sein.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Details dazu finden Sie unter Anforderungen an Bezeichner.

col_name

Gibt den Spaltenbezeichner (Name) an. Alle Anforderungen an Tabellenbezeichner gelten auch für Spaltenbezeichner.

Weitere Details dazu finden Sie unter Anforderungen an Bezeichner und Reservierte und begrenzte Schlüsselwörter.

Bemerkung

Zusätzlich zu den standardmäßig reservierten Schlüsselwörtern können die folgenden Schlüsselwörter nicht als Spaltenbezeichner verwendet werden, da sie für Kontextfunktionen nach ANSI-Standard reserviert sind:

  • CURRENT_DATE

  • CURRENT_ROLE

  • CURRENT_TIME

  • CURRENT_TIMESTAMP

  • CURRENT_USER

Die Liste der reservierten Schlüsselwörter finden Sie unter Reservierte und begrenzte Schlüsselwörter.

col_type

Gibt den Datentyp für die Spalte an.

Einzelheiten zu den Datentypen, die für Tabellenspalten angegeben werden können, finden Sie unter Datentypen von Iceberg-Tabellen.

query

Unterabfrage, die die Funktion INFER_SCHEMA aufruft und die Ausgabe als Array formatiert.

Optionale Parameter

EXTERNAL_VOLUME = 'external_volume_name'

Gibt den Bezeichner (Name) für das externe Volume an, auf dem die Iceberg-Tabelle ihre Metadatendateien und die Daten im Parquet-Format speichert. In Iceberg-Metadaten- und Iceberg-Manifest-Dateien sind das Tabellenschema, die Partitionen, die Snapshots und andere Metadaten gespeichert.

Wenn Sie diesen Parameter nicht angeben, wird für die Iceberg-Tabelle standardmäßig das externe Volume von Schema, Datenbank oder Konto verwendet. Das Schema hat Vorrang vor der Datenbank, und die Datenbank hat Vorrang vor dem Konto.

CONSTRAINT ...

Definiert eine Inline- oder Out-of-Line-Beschränkung für die angegebenen Spalten in der Tabelle.

Weitere Informationen zur Syntax finden Sie unter CREATE | ALTER TABLE … CONSTRAINT. Weitere Informationen zu Einschränkungen finden Sie unter Einschränkungen.

COLLATE 'collation_specification'

Gibt die Sortierung an, die für Spaltenoperationen wie den Zeichenfolgenvergleich verwendet werden soll. Diese Option gilt nur für Textspalten (z. B. VARCHAR, STRING, TEXT usw.). Weitere Details dazu finden Sie unter Sortierungsspezifikationen.

DEFAULT ... oder . AUTOINCREMENT ...

Gibt an, ob der Spalte ein Standardwert zugewiesen wird, wenn ein Wert nicht über eine INSERT- oder CREATE TABLE AS SELECT-Anweisung angegeben wird:

DEFAULT expr

Der Standardwert für die Spalte wird durch den angegebenen Ausdruck definiert. Eine der folgenden Optionen ist möglich:

  • Konstantenwert

  • Sequenzreferenz (seq_name.NEXTVAL)

  • Einfacher Ausdruck, der einen skalaren Wert zurückgibt.

    Der einfache Ausdruck kann eine SQL-UDF (benutzerdefinierte Funktion) enthalten, wenn die UDF keine sichere UDF ist.

    Bemerkung

    Wenn sich ein Standardausdruck auf eine benutzerdefinierte SQL-UDF bezieht, wird die Funktion beim Erstellen der Tabelle durch deren Definition ersetzt. Wenn die benutzerdefinierte Funktion in Zukunft neu definiert wird, führt dies nicht zur Aktualisierung des Standardausdrucks der Spalte.

    Der einfache Ausdruck darf keine Referenzen enthalten auf:

    • Unterabfragen

    • Aggregationen

    • Fensterfunktionen

    • Sichere UDFs

    • UDFs, die in anderen Sprachen als SQL geschrieben sind (z. B. Java, JavaScript)

    • Externe Funktionen

AUTOINCREMENT | IDENTITY } [ ( start_num , step_num ) | START num INCREMENT num } ]

AUTOINCREMENT und IDENTITY sind gleichbedeutend. Wenn einer von beiden verwendet wird, beginnt der Standardwert der Spalte mit einer angegebenen Zahl, und jeder nachfolgende Wert wird automatisch um den angegebenen Betrag erhöht.

Vorsicht

Snowflake verwendet eine Sequenz, um die Werte für eine automatisch inkrementierte Spalte zu generieren. Sequenzen haben Einschränkungen. Weitere Informationen dazu finden Sie unter Semantik von Sequenzen.

Der Standardwert für Start und Schritt/Erhöhung ist 1.

AUTOINCREMENT und IDENTITY können nur bei Spalten mit numerischen Datentypen verwendet werden.

Standard: Kein Wert (die Spalte hat keinen Standardwert)

Bemerkung

DEFAULT oder AUTOINCREMENT schließen sich gegenseitig aus. Für eine Spalte kann nur eine Option angegeben werden.

MASKING POLICY = policy_name

Gibt die Maskierungsrichtlinie an, die für eine Spalte festgelegt werden soll.

COMMENT 'string_literal'

Gibt einen Kommentar für die Spalte an.

(Beachten Sie, dass Kommentare auf Spaltenebene oder auf Tabellenebene angegeben werden können. Die Syntax ist jeweils leicht unterschiedlich.)

USING ( col_name , cond_col_1 ... )

Gibt die Argumente an, die an den SQL-Ausdruck für die bedingte Maskierungsrichtlinie übergeben werden sollen.

Die erste Spalte in der Liste gibt die Spalte für die Richtlinienbedingungen zur Maskierung oder Tokenisierung der Daten an. Sie muss mit der Spalte übereinstimmen, für die die Maskierungsrichtlinie festgelegt ist.

Die zusätzlichen Spalten geben an, welche Spalten ausgewertet werden sollen, um zu ermitteln, ob die Daten in der jeweiligen Zeile des Abfrageergebnisses maskiert oder tokenisiert werden sollen, wenn auf der ersten Spalte eine Abfrage ausgeführt wird.

Wenn die USING-Klausel weggelassen wird, behandelt Snowflake die bedingte Maskierungsrichtlinie wie eine normale Maskierungsrichtlinie.

CLUSTER BY ( expr [ , expr , ... ] )

Gibt eine oder mehrere Spalten oder Spaltenausdrücke in der Tabelle als Gruppierungsschlüssel an. Weitere Details dazu finden Sie unter Gruppierungsschlüssel und geclusterte Tabellen.

Standard: Kein Wert (für die Tabelle ist kein Gruppierungsschlüssel definiert)

Wichtig

Gruppierungsschlüssel sind nicht für alle Tabellen vorgesehen oder empfehlenswert. Sie eignen sich vorrangig für sehr große Tabellen (im Multi-Terabyte-Bereich).

Bevor Sie Gruppierungsschlüssel für eine Tabelle angeben, sollten Sie sich erst mit Mikropartitionen vertraut machen. Weitere Informationen dazu finden Sie unter Grundlegendes zu Tabellenstrukturen in Snowflake.

STAGE_FILE_FORMAT = ( FORMAT_NAME = 'file_format_name' ) oder . STAGE_FILE_FORMAT = ( TYPE = CSV | JSON | AVRO | ORC | PARQUET | XML [ ... ] )

Gibt das Dateiformat für die Tabelle an (zum Laden und Entladen von Daten). Dafür gibt es zwei Optionen:

FORMAT_NAME = file_format_name

Gibt ein bestehendes benanntes Dateiformat an, das zum Laden/Entladen von Daten in die Tabelle verwendet werden soll. Das benannte Dateiformat bestimmt den Formattyp (CSV, JSON usw.) sowie alle anderen Formatoptionen für Datendateien. Weitere Details dazu finden Sie unter CREATE FILE FORMAT.

TYPE = CSV | JSON | AVRO | ORC | PARQUET | XML [ ... ]

Gibt den Typ der Dateien an, die in die Tabelle geladen/entladen werden sollen.

Wenn ein Dateiformattyp angegeben wird, können zusätzliche formatspezifische Optionen angegeben werden. Weitere Informationen dazu finden Sie unter Formattypoptionen (unter diesem Thema).

Standard: TYPE = CSV

Bemerkung

FORMAT_NAME und TYPE schließen sich gegenseitig aus. Um unbeabsichtigtes Verhalten zu vermeiden, sollten Sie beim Erstellen einer Tabelle nur eine Option von beiden angeben.

STAGE_COPY_OPTIONS = ( ... )

Gibt eine (oder mehrere) Optionen an, die beim Laden von Daten in die Tabelle verwendet werden sollen. Weitere Details dazu finden Sie unter Kopieroptionen (unter diesem Thema).

DATA_RETENTION_TIME_IN_DAYS = integer

Gibt die Aufbewahrungsfrist für die Tabelle an, sodass Time Travel-Aktionen (SELECT, CLONE, UNDROP) für historische Daten in der Tabelle durchgeführt werden können. Weitere Details dazu finden Sie unter Verstehen und Verwenden von Time Travel und Verwenden von temporären und transienten Tabellen.

Eine ausführliche Beschreibung dieses Parameters auf Objektebene sowie weitere Informationen zu Objektparametern finden Sie unter Parameter.

Werte:

  • Standardausführung: 0 oder 1

  • Enterprise Edition:

    • 0 bis 90 für permanente Tabellen

    • 0 oder 1 für temporäre und transiente Tabellen

Standard:

  • Standardausführung: 1

  • Enterprise Edition (oder höher): 1 (es sei denn, es wurde ein anderer Standardwert auf Schema-, Datenbank- oder Kontoebene angegeben).

Bemerkung

Der Wert 0 deaktiviert Time Travel für die Tabelle.

MAX_DATA_EXTENSION_TIME_IN_DAYS = integer

Objektparameter, der die maximale Anzahl von Tagen angibt, für die Snowflake die Datenaufbewahrungsfrist für die Tabelle verlängern kann, um zu verhindern, dass Streams auf der Tabelle veraltet sind.

Eine detaillierte Beschreibung dieses Parameters finden Sie unter MAX_DATA_EXTENSION_TIME_IN_DAYS.

CHANGE_TRACKING = { TRUE | FALSE }

Gibt an, ob die Änderungsverfolgung für die Tabelle aktiviert werden soll.

  • TRUE aktiviert die Änderungsverfolgung der Tabelle. Diese Einstellung fügt der Quelltabelle ein Paar ausgeblendeter Spalten hinzu und beginnt mit dem Speichern von Metadaten zur Änderungsverfolgung in den Spalten. Diese Spalten verbrauchen nur wenig Speicherplatz.

    Die Änderungsverfolgungsmetadaten können mithilfe der CHANGES-Klausel für SELECT-Anweisungen oder durch Erstellen und Abfragen eines oder mehrerer Streams der Tabelle abgefragt werden.

  • FALSE aktiviert die Änderungsverfolgung in der Tabelle nicht.

Standard: FALSE

DEFAULT_DDL_COLLATION = 'collation_specification'

Gibt eine Standardsortierungsspezifikation für die Spalten in der Tabelle an, einschließlich der Spalten, die der Tabelle in Zukunft hinzugefügt werden.

Weitere Informationen zu diesem Parameter finden Sie unter DEFAULT_DDL_COLLATION.

COPY GRANTS

Gibt an, dass die Zugriffsberechtigungen aus der Originaltabelle beibehalten werden, wenn eine neue Tabelle mit einer der folgenden CREATE TABLE-Varianten erstellt wird:

  • CREATE OR REPLACE TABLE

  • CREATE TABLE … LIKE

  • CREATE TABLE … CLONE

Der Parameter kopiert alle Berechtigungen, mit Ausnahme von OWNERSHIP, aus der bestehenden Tabelle in die neue Tabelle. Die neue Tabelle übernimmt keine zukünftigen Berechtigungen, die für den Objekttyp im Schema definiert werden. Standardmäßig ist die Rolle, die die Anweisung CREATE TABLE ausführt, Eigentümer der neuen Tabelle.

Wenn der Parameter nicht in der CREATE ICEBERG TABLE-Anweisung enthalten ist, übernimmt die neue Tabelle keine expliziten Zugriffsrechte für die ursprüngliche Tabelle, übernimmt aber alle zukünftigen Berechtigungszuweisungen, die für den Objekttyp in dem Schema definiert werden.

Anmerkung:

  • Mit Datenfreigabe:

    • Wenn die vorhandene Tabelle für ein anderes Konto freigegeben wurde, wird auch die Ersatztabelle freigegeben.

    • Wenn die vorhandene Tabelle mit Ihrem Konto als Datenkonsument geteilt wurde und der Zugriff auf andere Rollen im Konto weiter gewährt wurde (unter Verwendung von GRANT IMPORTED PRIVILEGES auf der übergeordneten Datenbank), wird auch der Zugriff auf die Ersatztabelle gewährt.

  • Die SHOW GRANTS-Ausgabe für die Ersetzungstabelle listet den Berechtigungsempfänger für die kopierten Berechtigungen als Rolle auf, die die CREATE ICEBERG TABLE-Anweisung ausgeführt hat, mit dem aktuellen Zeitstempel für den Zeitpunkt, an dem die Anweisung ausgeführt wurde.

  • Die Operation zum Kopieren von Berechtigungen erfolgt atomar im Befehl CREATE ICEBERG TABLE (d. h. innerhalb derselben Transaktion).

COMMENT = 'string_literal'

Gibt einen Kommentar für die Tabelle an.

Standard: Kein Wert

(Beachten Sie, dass Kommentare auf Spaltenebene oder auf Tabellenebene angegeben werden können. Die Syntax ist jeweils leicht unterschiedlich.)

ROW ACCESS POLICY policy_name ON ( col_name [ , col_name ... ] )

Gibt die Zeilenzugriffsrichtlinie an, die für eine Tabelle festgelegt werden soll.

TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )

Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.

Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.

Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag-Kontingente für Objekte und Spalten.

Snowflake-Katalogparameter

CATALOG = 'SNOWFLAKE'

Gibt Snowflake als Iceberg-Katalog an. Snowflake übernimmt die gesamte Lebenszykluswartung der Tabelle, wie z. B. die Komprimierung.

BASE_LOCATION = 'relative_path_from_external_volume'

Gibt einen relativen Pfad vom EXTERNAL_VOLUME-Speicherort der Tabelle zu einem Verzeichnis an, in das Snowflake Tabellendaten und Metadaten schreiben kann.

Dieser Parameter kann nach dem Erstellen der Tabelle nicht mehr geändert werden.

Externe Katalogparameter (externalCatalogParams)

CATALOG = 'catalog_integration_name'

Gibt den Bezeichner (Name) der Katalogintegration für diese Tabelle an.

Wenn nichts angegeben wird, ist die Iceberg-Tabelle standardmäßig die Katalogintegration für das Schema, die Datenbank oder das Konto. Das Schema hat Vorrang vor der Datenbank, und die Datenbank hat Vorrang vor dem Konto.

AWS Glue

CATALOG_TABLE_NAME = 'catalog_table_name'

Gibt den Tabellennamen an, wie er von Ihrem AWS Glue-Datenkatalog erkannt wird. Ein Beispiel für die Verwendung von CATALOG_TABLE_NAME beim Erstellen einer Iceberg-Tabelle finden Sie unter Beispiele (unter diesem Thema). Dieser Parameter kann nach dem Erstellen der Tabelle nicht mehr geändert werden.

CATALOG_NAMESPACE = 'catalog_namespace'

Gibt optional den Namespace (z. B. my_glue_database) für die AWS Glue-Datenkatalogquelle an und überschreibt den Standard-Namespace des Katalogs, der mit der Katalogintegration angegeben wurde. Durch die Angabe eines Namespace auf Tabellenebene können Sie eine einzige Katalogintegration für AWS Glue verwenden, um Iceberg-Tabellen in verschiedenen Datenbanken zu erstellen.

Wenn nicht angegeben, verwendet die Tabelle den Standard-Katalog-Namespace, der mit der Katalogintegration verbunden ist.

Iceberg-Dateien im Objektspeicher

METADATA_FILE_PATH = 'metadata_file_path'

Gibt den relativen Pfad der Iceberg-Metadatendatei an, die für Spaltendefinitionen verwendet werden soll. Wenn beispielsweise s3://mybucket_us_east_1/metadata/v1.metadata.json der vollständige Pfad zu Ihrer Metadatendatei ist und der Speicherort des externen Volumes s3://mybucket_us_east_1/ ist, geben Sie metadata/v1.metadata.json als Wert für METADATA_FILE_PATH an.

Vor Snowflake-Version 7.34 wurde dieser Parameter METADATA_FILE_NAME genannt.

Bemerkung

Vor Snowflake-Version 7.34 war ein Parameter namens BASE_LOCATION (in früheren Versionen auch als FILE_PATH bezeichnet) erforderlich, um aus Iceberg-Dateien im Objektspeicher eine Tabelle zu erstellen. Der Parameter gab einen relativen Pfad vom EXTERNAL_VOLUME-Speicherort der Tabelle an. Ab Snowflake-Versionen 7.34 geben Sie keinen BASE_LOCATION-Speicher mehr an, um Tabelle aus Iceberg-Dateien im Objektspeicher zu erstellen.

Sie können weiterhin ein Skript oder eine Anweisung ausführen, die die frühere Version der CREATE ICEBERG TABLE-Syntax verwendet. Dies hat jedoch Auswirkungen auf den Wert, den Sie als metadata-file-relative-path-Pfad angeben, wenn Sie die Tabelle aktualisieren. Weitere Informationen dazu finden Sie unter ALTER ICEBERG TABLE … REFRESH.

Formattypoptionen (formatTypeOptions)

Formattypoptionen werden zum Laden von Daten in und Entladen von Daten aus Tabellen verwendet.

Je nach angegebenem Dateiformattyp (STAGE_FILE_FORMAT = ( TYPE = ... )) können Sie eine oder mehrere der folgenden formatspezifischen Optionen (durch Leerzeichen, Kommas oder Neue-Zeile-Zeichen getrennt) einschließen:

TYPE = CSV

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
Verwendung

Laden von Daten, Entladen von Daten und externe Tabellen

Definition
  • Beim Laden von Daten wird der aktuelle Komprimierungsalgorithmus für die Datendatei angegeben. Snowflake verwendet diese Option, um zu erkennen, wie eine bereits komprimierte Datendatei komprimiert wurde, sodass die komprimierten Daten in der Datei zum Laden extrahiert werden können.

  • Beim Entladen von Daten wird die Datendatei mit dem angegebenen Komprimierungsalgorithmus komprimiert.

Werte

Unterstützte Werte

Anmerkungen

AUTO

Beim Laden von Daten wird der Komprimierungsalgorithmus automatisch erkannt, mit Ausnahme von Brotli-komprimierten Dateien, die derzeit nicht automatisch erkannt werden können. Beim Entladen von Daten werden Dateien automatisch mit der Standardmethode gzip komprimiert.

GZIP

BZ2

BROTLI

Muss beim Laden/Entladen von Brotli-komprimierten Dateien angegeben werden.

ZSTD

Zstandard v0.8 (und höher) wird unterstützt.

DEFLATE

Deflate-komprimierte Dateien (mit zlib-Header, RFC1950).

RAW_DEFLATE

Raw Deflate-komprimierte Dateien (ohne Header, RFC1951).

NONE

Zeigt beim Laden von Daten an, dass die Dateien nicht komprimiert wurden. Zeigt beim Entladen von Daten an, dass die entladenen Dateien nicht komprimiert werden.

Standard

AUTO

RECORD_DELIMITER = 'character' | NONE
Verwendung

Laden von Daten, Entladen von Daten und externe Tabellen

Definition

Ein oder mehrere Einzelbyte- oder Multibyte-Zeichen, die Datensätze in einer Eingabedatei (Laden von Daten) oder einer entladenen Datei (Entladen von Daten) voneinander trennen. Akzeptiert gängige Escapesequenzen oder die folgenden Einzelbyte- oder Multibyte-Zeichen:

Einzelbyte-Zeichen

Oktalwerte (mit \\ vorangestellt) oder Hex-Werte (mit 0x oder \x vorangestellt). Geben Sie beispielsweise für Datensätze, die durch das Zirkumflex-Akzentzeichen (^) getrennt sind, den Oktalwert (\\136) oder den Hexadezimalwert (0x5e) an.

Multibyte-Zeichen

Hex-Werte (mit vorangestelltem \x). Geben Sie beispielsweise für Datensätze, die durch das Centzeichen (¢) getrennt sind, den Hexadezimalwert (\xC2\xA2) an.

Das Trennzeichen für RECORD_DELIMITER oder FIELD_DELIMITER darf jedoch keine Teilzeichenfolge des Trennzeichens der anderen Dateiformatoption sein (z. B. FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb').

Das angegebene Trennzeichen muss ein gültiges UTF-8-Zeichen sein und darf keine zufällige Sequenz von Bytes sein. Beachten Sie auch, dass das Trennzeichen nur maximal 20 Zeichen lang sein darf.

Akzeptiert auch den Wert NONE.

Standard
Laden von Daten

Zeichen für „Neue Zeile“. Beachten Sie, dass „neue Zeile“ logisch ist, sodass \r\n als neue Zeile für Dateien auf einer Windows-Plattform verstanden wird.

Entladen von Daten

Neue-Zeile-Zeichen (\n).

FIELD_DELIMITER = 'character' | NONE
Verwendung

Laden von Daten, Entladen von Daten und externe Tabellen

Definition

Ein oder mehrere Einzelbyte- oder Multibyte-Zeichen, die Felder in einer Eingabedatei (Laden von Daten) oder einer entladenen Datei (Entladen von Daten) voneinander trennen. Akzeptiert gängige Escapesequenzen oder die folgenden Einzelbyte- oder Multibyte-Zeichen:

Einzelbyte-Zeichen

Oktalwerte (mit \\ vorangestellt) oder Hex-Werte (mit 0x oder \x vorangestellt). Geben Sie beispielsweise für Datensätze, die durch das Zirkumflex-Akzentzeichen (^) getrennt sind, den Oktalwert (\\136) oder den Hexadezimalwert (0x5e) an.

Multibyte-Zeichen

Hex-Werte (mit vorangestelltem \x). Geben Sie beispielsweise für Datensätze, die durch das Centzeichen (¢) getrennt sind, den Hexadezimalwert (\xC2\xA2) an.

Das Trennzeichen für RECORD_DELIMITER oder FIELD_DELIMITER darf jedoch keine Teilzeichenfolge des Trennzeichens der anderen Dateiformatoption sein (z. B. FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb').

Bemerkung

Für Nicht-ASCII-Zeichen müssen Sie den Hex-Byte-Sequenzwert verwenden, um ein deterministisches Verhalten zu erreichen.

Das angegebene Trennzeichen muss ein gültiges UTF-8-Zeichen sein und darf keine zufällige Sequenz von Bytes sein. Beachten Sie auch, dass das Trennzeichen nur maximal 20 Zeichen lang sein darf.

Akzeptiert auch den Wert NONE.

Standard

Komma (,)

FILE_EXTENSION = 'string' | NONE
Verwendung

Nur Entladen von Daten

Definition

Gibt die Erweiterung für Dateien an, die in einen Stagingbereich entladen werden. Akzeptiert jede Erweiterung. Der Benutzer ist dafür verantwortlich, eine Dateiendung anzugeben, die von jeder gewünschten Software oder dem gewünschten Dienst gelesen werden kann.

Standard

Null, d. h. die Dateiendung wird durch den Formattyp bestimmt: .csv[compression], wobei compression die durch das Komprimierungsverfahren hinzugefügte Erweiterung ist, wenn COMPRESSION gesetzt ist.

Bemerkung

Wenn die SINGLE-Kopieroption den Wert TRUE hat, wird mit dem Befehl COPY standardmäßig eine Datei ohne Dateiendung entladen. Um eine Dateierweiterung anzugeben, geben Sie einen Dateinamen und eine Erweiterung im Pfad zum internen Speicherplatz internal_location oder im Pfad zum externen Speicherplatz external_location an (z. B. copy into @stage/data.csv).

PARSE_HEADER = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob die Überschriften in der ersten Zeile der Datendateien zur Bestimmung der Spaltennamen verwendet werden sollen.

Diese Dateiformatoption wird nur bei folgenden Aktionen angewendet:

  • Automatisches Erkennen von Spaltendefinitionen mithilfe der Funktion INFER_SCHEMA.

  • Laden von CSV-Daten in separate Spalten mithilfe der Funktion INFER_SCHEMA und der Kopieroption MATCH_BY_COLUMN_NAME.

Wenn die Option auf TRUE gesetzt ist, werden die Überschriften in der ersten Zeile zur Bestimmung der Spaltennamen verwendet. Der Standardwert FALSE gibt die Spaltennamen als „c “ zurück, wobei „ “ die Position der Spalte ist.

Beachten Sie, dass die Option SKIP_HEADER bei PARSE_HEADER = TRUE nicht unterstützt wird.

Standard: FALSE

SKIP_HEADER = integer
Verwendung

Laden von Daten und externe Tabellen

Definition

Anzahl der Zeilen am Anfang der zu überspringenden Datei.

Beachten Sie, dass SKIP_HEADER nicht die Werte RECORD_DELIMITER oder FIELD_DELIMITER verwendet, um zu bestimmen, was eine Kopfzeile ist. Stattdessen wird einfach die angegebene Anzahl von CRLF (Wagenrücklauf, Zeilenvorschub)-begrenzten Zeilen in der Datei übersprungen. RECORD_DELIMITER und FIELD_DELIMITER werden dann verwendet, um die zu ladenden Datenzeilen zu bestimmen.

Standard

0

SKIP_BLANK_LINES = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob Leerzeilen in den Datendateien übersprungen werden sollen oder ob sie zu einem Datensatzende-Fehler (Standardverhalten) führen.

Standard: FALSE

DATE_FORMAT = 'string' | AUTO
Verwendung

Laden und Entladen von Daten

Definition

Definiert das Format der Datumswerte in den Datendateien (Laden von Daten) oder der Tabelle (Entladen von Daten). Wenn ein Wert nicht angegeben ist oder AUTO ist, wird der Wert für den Parameter DATE_INPUT_FORMAT (Laden von Daten) oder DATE_OUTPUT_FORMAT (Entladen von Daten) verwendet.

Standard

AUTO

TIME_FORMAT = 'string' | AUTO
Verwendung

Laden und Entladen von Daten

Definition

Definiert das Format der Zeitwerte in den Datendateien (Laden von Daten) oder der Tabelle (Entladen von Daten). Wenn ein Wert nicht angegeben ist oder AUTO ist, wird der Wert für den Parameter TIME_INPUT_FORMAT (Laden von Daten) oder TIME_OUTPUT_FORMAT (Entladen von Daten) verwendet.

Standard

AUTO

TIMESTAMP_FORMAT = string' | AUTO
Verwendung

Laden und Entladen von Daten

Definition

Definiert das Format der Zeitstempelwerte in den Datendateien (Laden von Daten) oder der Tabelle (Entladen von Daten). Wenn ein Wert nicht angegeben oder AUTO ist, wird der Wert für den Parameter TIMESTAMP_INPUT_FORMAT (Laden von Daten) oder TIMESTAMP_OUTPUT_FORMAT (Entladen von Daten) verwendet.

Standard

AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8
Verwendung

Laden und Entladen von Daten

Definition

Definiert das Codierungsformat für die Binäreingabe oder -ausgabe. Die Option kann beim Laden von Daten in oder Entladen von Daten aus binären Spalten einer Tabelle verwendet werden.

Standard

HEX

ESCAPE = 'character' | NONE
Verwendung

Laden und Entladen von Daten

Definition

Zeichenfolge mit einem Einzelbyte-Zeichen, das als Escapezeichen für eingeschlossene und nicht eingeschlossene Feldwerte verwendet wird. Ein Escapezeichen ruft eine alternative Interpretation für nachfolgende Zeichen in einer Sequenz von Zeichen auf. Sie können das ESCAPE-Zeichen verwenden, um Instanzen von FIELD_OPTIONALLY_ENCLOSED_BY-Zeichen in den Daten als Literale zu interpretieren.

Akzeptiert gängige Escapesequenzen, Oktalwerte oder Hexadezimalwerte.

Laden von Daten

Gibt nur das Escapezeichen für eingeschlossene Felder an. Geben Sie das Zeichen an, das zum Einschließen von Feldern verwendet wird, indem Sie FIELD_OPTIONALLY_ENCLOSED_BY festlegen.

Bemerkung

Diese Dateiformatoption unterstützt nur Einzelbyte-Zeichen. Beachten Sie, dass die UTF-8-Zeichencodierung höherwertige ASCII-Zeichen als Multibyte-Zeichen darstellt. Wenn Ihre Datendatei mit dem UTF-8-Zeichensatz kodiert ist, können Sie keine höherwertigen ASCII-Zeichen als Optionswert angeben.

Wenn Sie ein höherwertiges Zeichen (ASCII) angeben, empfehlen wir Ihnen außerdem, die Dateiformatoption ENCODING = 'string' als Zeichencodierung für Ihre Datendateien festzulegen, damit das Zeichen korrekt interpretiert wird.

Entladen von Daten

Wenn diese Option gesetzt ist, wird der Escapezeichensatz für ESCAPE_UNENCLOSED_FIELD überschrieben.

Standard

NONE

ESCAPE_UNENCLOSED_FIELD = 'character' | NONE
Verwendung

Laden von Daten, Entladen von Daten und externe Tabellen

Definition

Zeichenfolge mit Einzelbyte-Zeichen, das als Escapezeichen nur für nicht eingeschlossene Feldwerte verwendet wird. Ein Escapezeichen ruft eine alternative Interpretation für nachfolgende Zeichen in einer Sequenz von Zeichen auf. Sie können das ESCAPE-Zeichen verwenden, um Instanzen von FIELD_DELIMITER- oder RECORD_DELIMITER-Zeichen in den Daten als Literale zu interpretieren. Das Escapezeichen kann auch verwendet werden, um Instanzen von sich selbst in den Daten in Escapezeichen einzuschließen.

Akzeptiert gängige Escapesequenzen, Oktalwerte oder Hexadezimalwerte.

Laden von Daten

Gibt nur das Escapezeichen für nicht eingeschlossene Felder an.

Bemerkung

  • Der Standardwert ist \\. Wenn eine Zeile in einer Datendatei mit dem umgekehrten Schrägstrich (\) endet, wird das für die Dateiformatoption RECORD_DELIMITER angegebene Zeilenumbruch- oder Wagenrücklaufzeichen durch dieses Zeichen ersetzt. Infolgedessen behandelt die Ladeoperation diese und die nächste Zeile als eine Datenzeile. Um dieses Problem zu vermeiden, setzen Sie diesen Wert auf NONE.

  • Diese Dateiformatoption unterstützt nur Einzelbyte-Zeichen. Beachten Sie, dass die UTF-8-Zeichencodierung höherwertige ASCII-Zeichen als Multibyte-Zeichen darstellt. Wenn Ihre Datendatei mit dem UTF-8-Zeichensatz kodiert ist, können Sie keine höherwertigen ASCII-Zeichen als Optionswert angeben.

    Wenn Sie ein höherwertiges Zeichen (ASCII) angeben, empfehlen wir Ihnen außerdem, die Dateiformatoption ENCODING = 'string' als Zeichencodierung für Ihre Datendateien festzulegen, damit das Zeichen korrekt interpretiert wird.

Entladen von Daten

Wenn ESCAPE gesetzt ist, wird diese Option vom Escapezeichensatz der Dateiformatoption überschrieben.

Standard

Backslash (\\)

TRIM_SPACE = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob Leerzeichen aus Feldern entfernt werden sollen.

Wenn Ihre externe Datenbanksoftware beispielsweise Felder in Anführungszeichen setzt, aber ein führendes Leerzeichen einfügt, liest Snowflake das führende Leerzeichen und nicht das öffnende Anführungszeichen als Anfang des Feldes (d. h. die Anführungszeichen werden als Teil der Zeichenfolge von Felddaten interpretiert). Setzen Sie diese Option auf TRUE, um unerwünschte Leerzeichen während des Datenladevorgangs zu entfernen.

Weiteres Beispiel: Wenn Zeichenfolgen von Anführungszeichen umschlossen sind und die Anführungszeichen von führenden oder nachstehende Leerzeichen, können Sie die umgebenden Leerzeichen mit dieser Option entfernen und die Anführungszeichen mit der Option FIELD_OPTIONALLY_ENCLOSED_BY. Beachten Sie, dass alle innerhalb der Anführungszeichen befindlichen Leerzeichen erhalten bleiben. Zum Beispiel bei FIELD_DELIMITER = '|' und FIELD_OPTIONALLY_ENCLOSED_BY = '"':

|"Hello world"|    /* loads as */  >Hello world<
|" Hello world "|  /* loads as */  > Hello world <
| "Hello world" |  /* loads as */  >Hello world<
Copy

(die Klammern in diesem Beispiel werden nicht geladen; sie dienen dazu, den Anfang und das Ende der geladenen Zeichenfolgen zu markieren).

Standard

FALSE

FIELD_OPTIONALLY_ENCLOSED_BY = 'character' | NONE
Verwendung

Laden von Daten, Entladen von Daten und externe Tabellen

Definition

Zeichen, das verwendet wird, um Zeichenfolgen einzuschließen. Der Wert kann NONE, ein einfaches Anführungszeichen (') oder ein doppeltes Anführungszeichen (") sein. Um das einfache Anführungszeichen verwenden zu können, müssen Sie die oktale oder hexadezimale Darstellung (0x27) oder das doppelte einfache Anführungszeichen als Escape-Zeichen ('') verwenden.

Wenn ein Feld dieses Zeichen enthält, können Sie es mit dem gleichen Zeichen löschen. Wenn der Wert beispielsweise das doppelte Anführungszeichen ist und ein Feld die Zeichenfolge A "B" C enthält, schließen Sie die doppelten Anführungszeichen in Escapezeichen ein:

A ""B"" C

Standard

NONE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
Verwendung

Laden von Daten, Entladen von Daten und externe Tabellen

Definition

Zeichenfolge, die zum Konvertieren in und von SQL NULL verwendet wird:

  • Beim Laden von Daten ersetzt Snowflake diese Werte in der Datenladequelle durch SQL NULL. Um mehr als eine Zeichenfolge anzugeben, schließen Sie die Liste der Zeichenfolgen in Klammern ein und trennen Sie jeden Wert durch Kommas.

    Beachten Sie, dass Snowflake alle Instanzen des Wertes in einen NULL-Wert konvertiert, unabhängig vom Datentyp. Wenn z. B. 2 als Wert angegeben wird, werden alle Instanzen von 2 entweder in eine Zeichenfolge oder in eine Zahl konvertiert.

    Beispiel:

    NULL_IF = ('\\N', 'NULL', 'NUL', '')

    Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.

  • Beim Entladen von Daten konvertiert Snowflake SQL-NULL-Werte in den ersten Wert der Liste.

Standard

\\N (d. h. NULL mit der Annahme, dass der ESCAPE_UNENCLOSED_FIELD-Wert \\ ist)

ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob ein Parsing-Fehler generiert werden soll, wenn die Anzahl der durch Trennzeichen begrenzten Spalten (d. h. Felder) in einer Eingabedatei nicht mit der Anzahl der Spalten in der entsprechenden Tabelle übereinstimmt.

Wenn auf FALSE gesetzt, wird kein Fehler erzeugt und die Last wird fortgesetzt. Wenn die Datei erfolgreich geladen wurde:

  • Wenn die Eingabedatei Datensätze mit mehr Feldern als Spalten in der Tabelle enthält, werden die übereinstimmenden Felder in der Reihenfolge ihres Auftretens in der Datei und die restlichen Felder nicht geladen.

  • Wenn die Eingabedatei Datensätze mit weniger Feldern als Spalten in der Tabelle enthält, werden die nicht übereinstimmenden Spalten in der Tabelle mit NULL-Werten geladen.

Diese Option geht davon aus, dass alle Datensätze innerhalb der Eingabedatei die gleiche Länge haben (d. h. eine Datei mit Datensätzen unterschiedlicher Länge gibt unabhängig vom für diesen Parameter angegebenen Wert einen Fehler zurück).

Standard

TRUE

Bemerkung

Bei der Transformation von Daten während des Ladevorgangs (d. h. Verwendung einer Abfrage als Quelle für den Befehl COPY), wird diese Option ignoriert. Es ist nicht erforderlich, dass die Datendateien die gleiche Anzahl und Reihenfolge der Spalten aufweisen wie die Zieltabelle.

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen ersetzt werden sollen ().

Bei Einstellung auf TRUE ersetzt Snowflake ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

Bei Einstellung auf FALSE gibt die Ladeoperation einen Fehler aus, wenn eine ungültige UTF-8-Zeichencodierung erkannt wird.

Standard

FALSE

EMPTY_FIELD_AS_NULL = TRUE | FALSE
Verwendung

Laden von Daten, Entladen von Daten und externe Tabellen

Definition
  • Gibt beim Laden von Daten an, ob für leere Felder einer Eingabedatei, die durch zwei aufeinanderfolgende Trennzeichen (z. B. ,,) repräsentiert werden, SQL NULL eingefügt werden soll.

    Wenn der Wert FALSE ist, versucht Snowflake, einem leeren Feld den entsprechenden Spaltentyp zuzuweisen. In Spalten vom Typ STRING wird eine leere Zeichenfolge eingefügt. Für andere Spaltentypen generiert der COPY-Befehl einen Fehler.

  • Beim Entladen von Daten wird diese Option in Kombination mit FIELD_OPTIONALLY_ENCLOSED_BY verwendet. Wenn FIELD_OPTIONALLY_ENCLOSED_BY = NONE festgelegt ist, werden bei EMPTY_FIELD_AS_NULL = FALSE leere Zeichenfolgen in Tabellen entladen, um leere Zeichenfolgenwerte zu erhalten, ohne dass die Feldwerte in Anführungszeichen eingeschlossen werden.

    Wenn TRUE festgelegt wird, muss FIELD_OPTIONALLY_ENCLOSED_BY ein Zeichen angeben, das zum Umschließen von Zeichenfolgen verwendet wird.

Standard

TRUE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob die BOM (Bytereihenfolge-Marke) übersprungen werden soll, wenn sie in einer Datendatei vorhanden ist. Eine BOM ist ein Zeichencode am Anfang einer Datendatei, der die Bytefolge und die Codierungsform definiert.

Wenn auf FALSE gesetzt, erkennt Snowflake alle BOM in Datendateien, was dazu führen kann, dass die BOM entweder einen Fehler verursacht oder in der ersten Spalte der Tabelle zusammengeführt wird.

Standard

TRUE

ENCODING = 'string'
Verwendung

Laden von Daten und externe Tabellen

Definition

Zeichenfolge (Konstante), die den Zeichensatz der Quelldaten beim Laden von Daten in eine Tabelle angibt.

Zeichensatz 

ENCODING -Wert

Unterstützte Sprachen

Anmerkungen

Big5

BIG5

Traditionelles Chinesisch

EUC-JP

EUCJP

Japanisch

EUC-KR

EUCKR

Koreanisch

GB18030

GB18030

Chinesisch

IBM420

IBM420

Arabisch

IBM424

IBM424

Hebräisch

IBM949

IBM949

Koreanisch

ISO-2022-CN

ISO2022CN

Vereinfachtes Chinesisch

ISO-2022-JP

ISO2022JP

Japanisch

ISO-2022-KR

ISO2022KR

Koreanisch

ISO-8859-1

ISO88591

Dänisch, Deutsch, Englisch, Französisch, Italienisch, Niederländisch, Norwegisch, Portugiesisch, Schwedisch

ISO-8859-2

ISO88592

Polnisch, Rumänisch, Tschechisch, Ungarisch

ISO-8859-5

ISO88595

Russisch

ISO-8859-6

ISO88596

Arabisch

ISO-8859-7

ISO88597

Griechisch

ISO-8859-8

ISO88598

Hebräisch

ISO-8859-9

ISO88599

Türkisch

ISO-8859-15

ISO885915

Dänisch, Deutsch, Englisch, Französisch, Italienisch, Niederländisch, Norwegisch, Portugiesisch, Schwedisch

Identisch mit ISO-8859-1, bis auf 8 Zeichen, zu denen auch das Euro-Währungssymbol gehört.

KOI8-R

KOI8R

Russisch

Shift_JIS

SHIFTJIS

Japanisch

UTF-8

UTF8

Alle Sprachen

Zum Laden von Daten aus Dateien mit Trennzeichen (CSV, TSV usw.) ist UTF-8 die Standardeinstellung. . . Beim Laden von Daten aus allen anderen unterstützten Dateiformaten (JSON, Avro usw.) sowie zum Entladen von Daten ist UTF-8 der einzige unterstützte Zeichensatz.

UTF-16

UTF16

Alle Sprachen

UTF-16BE

UTF16BE

Alle Sprachen

UTF-16LE

UTF16LE

Alle Sprachen

UTF-32

UTF32

Alle Sprachen

UTF-32BE

UTF32BE

Alle Sprachen

UTF-32LE

UTF32LE

Alle Sprachen

windows-949

WINDOWS949

Koreanisch

windows-1250

WINDOWS1250

Polnisch, Rumänisch, Tschechisch, Ungarisch

windows-1251

WINDOWS1251

Russisch

windows-1252

WINDOWS1252

Dänisch, Deutsch, Englisch, Französisch, Italienisch, Niederländisch, Norwegisch, Portugiesisch, Schwedisch

windows-1253

WINDOWS1253

Griechisch

windows-1254

WINDOWS1254

Türkisch

windows-1255

WINDOWS1255

Hebräisch

windows-1256

WINDOWS1256

Arabisch

Standard

UTF8

Bemerkung

Snowflake speichert alle Daten intern im UTF-8-Zeichensatz. Die Daten werden in UTF-8 umgewandelt, bevor sie in Snowflake geladen werden.

TYPE = JSON

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
Verwendung

Laden von Daten und externe Tabellen

Definition
  • Beim Laden von Daten wird der aktuelle Komprimierungsalgorithmus für die Datendatei angegeben. Snowflake verwendet diese Option, um zu erkennen, wie eine bereits komprimierte Datendatei komprimiert wurde, sodass die komprimierten Daten in der Datei zum Laden extrahiert werden können.

  • Beim Entladen von Daten wird die Datendatei mit dem angegebenen Komprimierungsalgorithmus komprimiert.

Werte

Unterstützte Werte

Anmerkungen

AUTO

Beim Laden von Daten wird der Komprimierungsalgorithmus automatisch erkannt, mit Ausnahme von Brotli-komprimierten Dateien, die derzeit nicht automatisch erkannt werden können. Beim Entladen von Daten werden Dateien automatisch mit der Standardmethode gzip komprimiert.

GZIP

BZ2

BROTLI

Muss beim Laden/Entladen von Brotli-komprimierten Dateien angegeben werden.

ZSTD

Zstandard v0.8 (und höher) wird unterstützt.

DEFLATE

Deflate-komprimierte Dateien (mit zlib-Header, RFC1950).

RAW_DEFLATE

Raw Deflate-komprimierte Dateien (ohne Header, RFC1951).

NONE

Zeigt beim Laden von Daten an, dass die Dateien nicht komprimiert wurden. Zeigt beim Entladen von Daten an, dass die entladenen Dateien nicht komprimiert werden.

Standard

AUTO

DATE_FORMAT = 'string' | AUTO
Verwendung

Nur Laden von Daten

Definition

Definiert das Format der Datums-Zeichenfolgenwerte in den Datendateien. Wenn ein Wert nicht angegeben oder AUTO ist, wird der Wert des Parameters DATE_INPUT_FORMAT verwendet.

Diese Dateiformatoption wird nur bei folgenden Aktionen angewendet:

  • Laden von JSON-Daten in separate Spalten unter Verwendung der Kopieroption MATCH_BY_COLUMN_NAME.

  • Laden von JSON-Daten in separate Spalten durch Angabe einer Abfrage in der COPY-Anweisung (d. h. COPY-Transformation).

Standard

AUTO

TIME_FORMAT = 'string' | AUTO
Verwendung

Nur Laden von Daten

Definition

Definiert das Format der Uhrzeit-Zeichenfolgenwerte in den Datendateien. Wenn ein Wert nicht angegeben oder AUTO ist, wird der Wert des Parameters TIME_INPUT_FORMAT verwendet.

Diese Dateiformatoption wird nur bei folgenden Aktionen angewendet:

  • Laden von JSON-Daten in separate Spalten unter Verwendung der Kopieroption MATCH_BY_COLUMN_NAME.

  • Laden von JSON-Daten in separate Spalten durch Angabe einer Abfrage in der COPY-Anweisung (d. h. COPY-Transformation).

Standard

AUTO

TIMESTAMP_FORMAT = string' | AUTO
Verwendung

Nur Laden von Daten

Definition

Definiert das Format der Zeitstempel-Zeichenfolgenwerte in den Datendateien. Wenn ein Wert nicht angegeben oder AUTO ist, wird der Wert des Parameters TIMESTAMP_INPUT_FORMAT verwendet.

Diese Dateiformatoption wird nur bei folgenden Aktionen angewendet:

  • Laden von JSON-Daten in separate Spalten unter Verwendung der Kopieroption MATCH_BY_COLUMN_NAME.

  • Laden von JSON-Daten in separate Spalten durch Angabe einer Abfrage in der COPY-Anweisung (d. h. COPY-Transformation).

Standard

AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8
Verwendung

Nur Laden von Daten

Definition

Definiert das Kodierungsformat für Binärzeichenfolgenwerte in den Datendateien. Die Option kann beim Laden von Daten in binäre Spalten einer Tabelle verwendet werden.

Diese Dateiformatoption wird nur bei folgenden Aktionen angewendet:

  • Laden von JSON-Daten in separate Spalten unter Verwendung der Kopieroption MATCH_BY_COLUMN_NAME.

  • Laden von JSON-Daten in separate Spalten durch Angabe einer Abfrage in der COPY-Anweisung (d. h. COPY-Transformation).

Standard

HEX

TRIM_SPACE = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob vorangestellte und nachstehende Leerzeichen aus Zeichenfolgen entfernt werden sollen.

Wenn Ihre externe Datenbanksoftware beispielsweise Felder in Anführungszeichen setzt, aber ein führendes Leerzeichen einfügt, liest Snowflake das führende Leerzeichen und nicht das öffnende Anführungszeichen als Anfang des Feldes (d. h. die Anführungszeichen werden als Teil der Zeichenfolge von Felddaten interpretiert). Setzen Sie diese Option auf TRUE, um unerwünschte Leerzeichen während des Datenladevorgangs zu entfernen.

Diese Dateiformatoption wird nur dann auf die nachfolgenden Aktionen angewendet, wenn JSON-Daten mit der Kopieroption MATCH_BY_COLUMN_NAME in separate Spalten geladen werden.

Standard

FALSE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
Verwendung

Nur Laden von Daten

Definition

Zeichenfolge, die zum Konvertieren in und von SQL NULL verwendet wird. Snowflake ersetzt diese Zeichenfolgen in der Datenladequelle durch SQL NULL. Um mehr als eine Zeichenfolge anzugeben, schließen Sie die Liste der Zeichenfolgen in Klammern ein und trennen Sie jeden Wert durch Kommas.

Diese Dateiformatoption wird nur dann auf die nachfolgenden Aktionen angewendet, wenn JSON-Daten mit der Kopieroption MATCH_BY_COLUMN_NAME in separate Spalten geladen werden.

Beachten Sie, dass Snowflake alle Instanzen des Wertes in einen NULL-Wert konvertiert, unabhängig vom Datentyp. Wenn z. B. 2 als Wert angegeben wird, werden alle Instanzen von 2 entweder in eine Zeichenfolge oder in eine Zahl konvertiert.

Beispiel:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.

Standard

\\N (d. h. NULL mit der Annahme, dass der ESCAPE_UNENCLOSED_FIELD-Wert \\ ist)

FILE_EXTENSION = 'string' | NONE
Verwendung

Nur Entladen von Daten

Definition

Gibt die Erweiterung für Dateien an, die in einen Stagingbereich entladen werden. Akzeptiert jede Erweiterung. Der Benutzer ist dafür verantwortlich, eine Dateiendung anzugeben, die von jeder gewünschten Software oder dem gewünschten Dienst gelesen werden kann.

Standard

Null, d. h. die Dateiendung wird durch den Formattyp bestimmt: .json[compression], wobei compression die durch das Komprimierungsverfahren hinzugefügte Erweiterung ist, wenn COMPRESSION gesetzt ist.

ENABLE_OCTAL = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der das Parsen von Oktalzahlen ermöglicht.

Standard

FALSE

ALLOW_DUPLICATE = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, dass doppelte Objektfeldnamen erlaubt sind (nur der letzte wird beibehalten).

Standard

FALSE

STRIP_OUTER_ARRAY = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der den JSON-Parser anweist, die äußeren Klammern zu entfernen (d. h. [ ]).

Standard

FALSE

STRIP_NULL_VALUES = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der den JSON-Parser anweist, Objektfelder oder Array-Elemente mit null-Werten zu entfernen. Zum Beispiel, wenn auf TRUE gesetzt:

Vorher

Nachher

[null]

[]

[null,null,3]

[,,3]

{"a":null,"b":null,"c":123}

{"c":123}

{"a":[1,null,2],"b":{"x":null,"y":88}}

{"a":[1,,2],"b":{"y":88}}

Standard

FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen ersetzt werden sollen (). Diese Option führt eine 1:1-Zeichenersetzung aus.

Werte

Bei Einstellung auf TRUE ersetzt Snowflake ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

Bei Einstellung auf FALSE gibt die Ladeoperation einen Fehler aus, wenn eine ungültige UTF-8-Zeichencodierung erkannt wird.

Standard

FALSE

IGNORE_UTF8_ERRORS = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob UTF-8-Codierungsfehler Fehlerbedingungen erzeugen. Dies ist eine alternative Syntax für REPLACE_INVALID_CHARACTERS.

Werte

Wenn auf TRUE gesetzt, werden alle ungültigen UTF-8-Sequenzen stillschweigend durch das Unicodezeichen U+FFFD (d. h. „Ersetzungszeichen“) ersetzt.

Bei Einstellung auf FALSE gibt die Ladeoperation einen Fehler aus, wenn eine ungültige UTF-8-Zeichencodierung erkannt wird.

Standard

FALSE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob die BOM (Bytereihenfolge-Marke) übersprungen werden soll, wenn sie in einer Datendatei vorhanden ist. Eine BOM ist ein Zeichencode am Anfang einer Datendatei, der die Bytefolge und die Codierungsform definiert.

Wenn auf FALSE gesetzt, erkennt Snowflake alle BOM in Datendateien, was dazu führen kann, dass die BOM entweder einen Fehler verursacht oder in der ersten Spalte der Tabelle zusammengeführt wird.

Standard

TRUE

TYPE = AVRO

COMPRESSION = AUTO | GZIP | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
Verwendung

Nur Laden von Daten

Definition
  • Beim Laden von Daten wird der aktuelle Komprimierungsalgorithmus für die Datendatei angegeben. Snowflake verwendet diese Option, um zu erkennen, wie eine bereits komprimierte Datendatei komprimiert wurde, sodass die komprimierten Daten in der Datei zum Laden extrahiert werden können.

  • Beim Entladen von Daten wird die Datendatei mit dem angegebenen Komprimierungsalgorithmus komprimiert.

Werte

Unterstützte Werte

Anmerkungen

AUTO

Beim Laden von Daten wird der Komprimierungsalgorithmus automatisch erkannt, mit Ausnahme von Brotli-komprimierten Dateien, die derzeit nicht automatisch erkannt werden können. Beim Entladen von Daten werden Dateien automatisch mit der Standardmethode gzip komprimiert.

GZIP

BROTLI

Muss beim Laden/Entladen von Brotli-komprimierten Dateien angegeben werden.

ZSTD

Zstandard v0.8 (und höher) wird unterstützt.

DEFLATE

Deflate-komprimierte Dateien (mit zlib-Header, RFC1950).

RAW_DEFLATE

Raw Deflate-komprimierte Dateien (ohne Header, RFC1951).

NONE

Zeigt beim Laden von Daten an, dass die Dateien nicht komprimiert wurden. Zeigt beim Entladen von Daten an, dass die entladenen Dateien nicht komprimiert werden.

Standard

AUTO.

Bemerkung

Wir empfehlen die Verwendung der Standardoption AUTO, da mit dieser sowohl die Datei- als auch die Codec-Komprimierung bestimmt wird. Die Angabe einer Komprimierungsoption bezieht sich auf die Komprimierung von Dateien, nicht auf die Komprimierung von Blöcken (Codecs).

TRIM_SPACE = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob vorangestellte und nachstehende Leerzeichen aus Zeichenfolgen entfernt werden sollen.

Wenn Ihre externe Datenbanksoftware beispielsweise Felder in Anführungszeichen setzt, aber ein führendes Leerzeichen einfügt, liest Snowflake das führende Leerzeichen und nicht das öffnende Anführungszeichen als Anfang des Feldes (d. h. die Anführungszeichen werden als Teil der Zeichenfolge von Felddaten interpretiert). Setzen Sie diese Option auf TRUE, um unerwünschte Leerzeichen während des Datenladevorgangs zu entfernen.

Diese Dateiformatoption wird nur dann auf die nachfolgenden Aktionen angewendet, wenn Avro-Daten mit der Kopieroption MATCH_BY_COLUMN_NAME in separate Spalten geladen werden.

Standard

FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen ersetzt werden sollen (). Diese Option führt eine 1:1-Zeichenersetzung aus.

Werte

Bei Einstellung auf TRUE ersetzt Snowflake ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

Bei Einstellung auf FALSE gibt die Ladeoperation einen Fehler aus, wenn eine ungültige UTF-8-Zeichencodierung erkannt wird.

Standard

FALSE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
Verwendung

Nur Laden von Daten

Definition

Zeichenfolge, die zum Konvertieren in und von SQL NULL verwendet wird. Snowflake ersetzt diese Zeichenfolgen in der Datenladequelle durch SQL NULL. Um mehr als eine Zeichenfolge anzugeben, schließen Sie die Liste der Zeichenfolgen in Klammern ein und trennen Sie jeden Wert durch Kommas.

Diese Dateiformatoption wird nur dann auf die nachfolgenden Aktionen angewendet, wenn Avro-Daten mit der Kopieroption MATCH_BY_COLUMN_NAME in separate Spalten geladen werden.

Beachten Sie, dass Snowflake alle Instanzen des Wertes in einen NULL-Wert konvertiert, unabhängig vom Datentyp. Wenn z. B. 2 als Wert angegeben wird, werden alle Instanzen von 2 entweder in eine Zeichenfolge oder in eine Zahl konvertiert.

Beispiel:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.

Standard

\\N (d. h. NULL mit der Annahme, dass der ESCAPE_UNENCLOSED_FIELD-Wert \\ ist)

TYPE = ORC

TRIM_SPACE = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob vorangestellte und nachstehende Leerzeichen aus Zeichenfolgen entfernt werden sollen.

Wenn Ihre externe Datenbanksoftware beispielsweise Felder in Anführungszeichen setzt, aber ein führendes Leerzeichen einfügt, liest Snowflake das führende Leerzeichen und nicht das öffnende Anführungszeichen als Anfang des Feldes (d. h. die Anführungszeichen werden als Teil der Zeichenfolge von Felddaten interpretiert). Setzen Sie diese Option auf TRUE, um unerwünschte Leerzeichen während des Datenladevorgangs zu entfernen.

Diese Dateiformatoption wird nur dann auf die nachfolgenden Aktionen angewendet, wenn Orc-Daten mit der Kopieroption MATCH_BY_COLUMN_NAME in separate Spalten geladen werden.

Standard

FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen ersetzt werden sollen (). Diese Option führt eine 1:1-Zeichenersetzung aus.

Werte

Bei Einstellung auf TRUE ersetzt Snowflake ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

Bei Einstellung auf FALSE gibt die Ladeoperation einen Fehler aus, wenn eine ungültige UTF-8-Zeichencodierung erkannt wird.

Standard

FALSE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
Verwendung

Laden von Daten und externe Tabellen

Definition

Zeichenfolge, die zum Konvertieren in und von SQL NULL verwendet wird. Snowflake ersetzt diese Zeichenfolgen in der Datenladequelle durch SQL NULL. Um mehr als eine Zeichenfolge anzugeben, schließen Sie die Liste der Zeichenfolgen in Klammern ein und trennen Sie jeden Wert durch Kommas.

Diese Dateiformatoption wird nur dann auf die nachfolgenden Aktionen angewendet, wenn Orc-Daten mit der Kopieroption MATCH_BY_COLUMN_NAME in separate Spalten geladen werden.

Beachten Sie, dass Snowflake alle Instanzen des Wertes in einen NULL-Wert konvertiert, unabhängig vom Datentyp. Wenn z. B. 2 als Wert angegeben wird, werden alle Instanzen von 2 entweder in eine Zeichenfolge oder in eine Zahl konvertiert.

Beispiel:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.

Standard

\\N (d. h. NULL mit der Annahme, dass der ESCAPE_UNENCLOSED_FIELD-Wert \\ ist)

TYPE = PARQUET

COMPRESSION = AUTO | LZO | SNAPPY | NONE
Verwendung

Laden von Daten, Entladen von Daten und externe Tabellen

Definition

  • Gibt beim Laden von Daten den aktuellen Komprimierungsalgorithmus für Spalten in den Parquet-Dateien an.

  • Beim Entladen von Daten wird die Datendatei mit dem angegebenen Komprimierungsalgorithmus komprimiert.

Werte

Unterstützte Werte

Anmerkungen

AUTO

Beim Laden von Daten wird der Komprimierungsalgorithmus automatisch erkannt. Unterstützt die folgenden Komprimierungsalgorithmen: Brotli, gzip, Lempel-Ziv-Oberhumer (LZO), LZ4, Snappy und Zstandard v0.8 (und höher). . Beim Entladen von Daten werden entladene Dateien standardmäßig mit dem Snappy-Algorithmus komprimiert.

LZO

Beim Entladen von Daten werden Dateien standardmäßig mit dem Snappy-Algorithmus komprimiert. Geben Sie diesen Wert an, wenn Daten in LZO-komprimierte Dateien entladen werden sollen.

SNAPPY

Beim Entladen von Daten werden Dateien standardmäßig mit dem Snappy-Algorithmus komprimiert. Sie können diesen Wert optional angeben.

NONE

Zeigt beim Laden von Daten an, dass die Dateien nicht komprimiert wurden. Zeigt beim Entladen von Daten an, dass die entladenen Dateien nicht komprimiert werden.

Standard

AUTO

SNAPPY_COMPRESSION = TRUE | FALSE
Verwendung

Nur Entladen von Daten

Unterstützte Werte

Anmerkungen

AUTO

Entladene Dateien werden standardmäßig mit dem Komprimierungsalgorithmus Snappy komprimiert.

SNAPPY

Kann angegeben werden, wenn Snappy-komprimierte Dateien entladen werden.

NONE

Zeigt beim Laden von Daten an, dass die Dateien nicht komprimiert wurden. Zeigt beim Entladen von Daten an, dass die entladenen Dateien nicht komprimiert werden.

Definition

Boolescher Wert, der angibt, ob entladene Dateien mit dem SNAPPY-Algorithmus komprimiert werden.

Bemerkung

Veraltet. Verwenden Sie stattdessen COMPRESSION = SNAPPY.

Einschränkungen

Wird nur für Datenentladevorgänge unterstützt.

Standard

TRUE

BINARY_AS_TEXT = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob Spalten ohne definierten logischen Datentyp als UTF-8-Text interpretiert werden sollen. Wenn auf FALSE gesetzt, interpretiert Snowflake diese Spalten als Binärdaten.

Standard

TRUE

Bemerkung

Snowflake empfiehlt, BINARY_AS_TEXT auf FALSE zu setzen, um mögliche Konvertierungsprobleme zu vermeiden.

TRIM_SPACE = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob vorangestellte und nachstehende Leerzeichen aus Zeichenfolgen entfernt werden sollen.

Wenn Ihre externe Datenbanksoftware beispielsweise Felder in Anführungszeichen setzt, aber ein führendes Leerzeichen einfügt, liest Snowflake das führende Leerzeichen und nicht das öffnende Anführungszeichen als Anfang des Feldes (d. h. die Anführungszeichen werden als Teil der Zeichenfolge von Felddaten interpretiert). Setzen Sie diese Option auf TRUE, um unerwünschte Leerzeichen während des Datenladevorgangs zu entfernen.

Diese Dateiformatoption wird nur dann auf die nachfolgenden Aktionen angewendet, wenn Parquet-Daten mit der Kopieroption MATCH_BY_COLUMN_NAME in separate Spalten geladen werden.

Standard

FALSE

USE_LOGICAL_TYPE = TRUE | FALSE
Verwendung

Laden von Daten, Abfragen von Daten in Stagingdateien sowie Schemaerkennung.

Definition

Boolescher Wert, der angibt, ob logische Parquet-Typen verwendet werden sollen. Mit dieser Dateiformatoption kann Snowflake beim Laden von Daten logische Parquet-Typen interpretieren. Weitere Informationen dazu finden Sie unter Definitionen für logische Parquet-Typen. Um logische Parquet-Typen zu aktivieren, setzen Sie USE_LOGICAL_TYPE beim Erstellen einer neuen Dateiformatoption auf TRUE.

Einschränkungen

Nicht unterstützt für das Entladen von Daten.

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen ersetzt werden sollen (). Diese Option führt eine 1:1-Zeichenersetzung aus.

Werte

Bei Einstellung auf TRUE ersetzt Snowflake ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

Bei Einstellung auf FALSE gibt die Ladeoperation einen Fehler aus, wenn eine ungültige UTF-8-Zeichencodierung erkannt wird.

Standard

FALSE

NULL_IF = ( 'string1' [ , 'string2' , ... ] )
Verwendung

Nur Laden von Daten

Definition

Zeichenfolge, die zum Konvertieren in und von SQL NULL verwendet wird. Snowflake ersetzt diese Zeichenfolgen in der Datenladequelle durch SQL NULL. Um mehr als eine Zeichenfolge anzugeben, schließen Sie die Liste der Zeichenfolgen in Klammern ein und trennen Sie jeden Wert durch Kommas.

Diese Dateiformatoption wird nur dann auf die nachfolgenden Aktionen angewendet, wenn Parquet-Daten mit der Kopieroption MATCH_BY_COLUMN_NAME in separate Spalten geladen werden.

Beachten Sie, dass Snowflake alle Instanzen des Wertes in einen NULL-Wert konvertiert, unabhängig vom Datentyp. Wenn z. B. 2 als Wert angegeben wird, werden alle Instanzen von 2 entweder in eine Zeichenfolge oder in eine Zahl konvertiert.

Beispiel:

NULL_IF = ('\\N', 'NULL', 'NUL', '')

Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.

Standard

\\N (d. h. NULL mit der Annahme, dass der ESCAPE_UNENCLOSED_FIELD-Wert \\ ist)

TYPE = XML

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
Verwendung

Nur Laden von Daten

Definition
  • Beim Laden von Daten wird der aktuelle Komprimierungsalgorithmus für die Datendatei angegeben. Snowflake verwendet diese Option, um zu erkennen, wie eine bereits komprimierte Datendatei komprimiert wurde, sodass die komprimierten Daten in der Datei zum Laden extrahiert werden können.

  • Beim Entladen von Daten wird die Datendatei mit dem angegebenen Komprimierungsalgorithmus komprimiert.

Werte

Unterstützte Werte

Anmerkungen

AUTO

Beim Laden von Daten wird der Komprimierungsalgorithmus automatisch erkannt, mit Ausnahme von Brotli-komprimierten Dateien, die derzeit nicht automatisch erkannt werden können. Beim Entladen von Daten werden Dateien automatisch mit der Standardmethode gzip komprimiert.

GZIP

BZ2

BROTLI

Muss beim Laden/Entladen von Brotli-komprimierten Dateien angegeben werden.

ZSTD

Zstandard v0.8 (und höher) wird unterstützt.

DEFLATE

Deflate-komprimierte Dateien (mit zlib-Header, RFC1950).

RAW_DEFLATE

Raw Deflate-komprimierte Dateien (ohne Header, RFC1951).

NONE

Zeigt beim Laden von Daten an, dass die Dateien nicht komprimiert wurden. Zeigt beim Entladen von Daten an, dass die entladenen Dateien nicht komprimiert werden.

Standard

AUTO

IGNORE_UTF8_ERRORS = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob UTF-8-Codierungsfehler Fehlerbedingungen erzeugen. Dies ist eine alternative Syntax für REPLACE_INVALID_CHARACTERS.

Werte

Wenn auf TRUE gesetzt, werden alle ungültigen UTF-8-Sequenzen stillschweigend durch das Unicodezeichen U+FFFD (d. h. „Ersetzungszeichen“) ersetzt.

Bei Einstellung auf FALSE gibt die Ladeoperation einen Fehler aus, wenn eine ungültige UTF-8-Zeichencodierung erkannt wird.

Standard

FALSE

PRESERVE_SPACE = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob der XML-Parser führende und nachstehende Leerzeichen im Elementinhalt beibehält.

Standard

FALSE

STRIP_OUTER_ELEMENT = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob der XML-Parser das äußere XML-Element entfernt und Elemente der zweiten Ebene als separate Dokumente anzeigt.

Standard

FALSE

DISABLE_SNOWFLAKE_DATA = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob der XML-Parser die Erkennung von semistrukturierten Snowflake-Daten-Tags deaktiviert.

Standard

FALSE

DISABLE_AUTO_CONVERT = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob der XML-Parser die automatische Konvertierung von numerischen und booleschen Werten von Text in native Darstellung deaktiviert.

Standard

FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
Verwendung

Laden von Daten und externe Tabellen

Definition

Boolescher Wert, der angibt, ob ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen ersetzt werden sollen (). Diese Option führt eine 1:1-Zeichenersetzung aus.

Werte

Bei Einstellung auf TRUE ersetzt Snowflake ungültige UTF-8-Zeichen durch das Unicode-Ersetzungszeichen.

Bei Einstellung auf FALSE gibt die Ladeoperation einen Fehler aus, wenn eine ungültige UTF-8-Zeichencodierung erkannt wird.

Standard

FALSE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob eine BOM (Byte-Reihenfolgemarke) in einer Eingabedatei übersprungen werden soll. Eine BOM ist ein Zeichencode am Anfang einer Datendatei, der die Bytefolge und die Codierungsform definiert.

Wenn auf FALSE gesetzt, erkennt Snowflake alle BOM in Datendateien, was dazu führen kann, dass die BOM entweder einen Fehler verursacht oder in der ersten Spalte der Tabelle zusammengeführt wird.

Standard

TRUE

Kopieroptionen (copyOptions)

Kopieroptionen werden zum Laden von Daten in und Entladen von Daten aus Tabellen verwendet.

Sie können eine oder mehrere der folgenden Kopieroptionen angeben (durch Leerzeichen, Kommas oder Neue-Zeile-Zeichen getrennt):

STAGE_COPY_OPTIONS = ( ... )

ON_ERROR = CONTINUE | SKIP_FILE | SKIP_FILE_num | 'SKIP_FILE_num%' | ABORT_STATEMENT
Verwendung

Nur Laden von Daten

Definition

Zeichenfolge (Konstante), die die Fehlerbehandlung für die Ladeoperation angibt.

Wichtig

Prüfen Sie sorgfältig den Wert der ON_ERROR-Kopieroption. Der Standardwert ist in vielen Fällen angemessen, aber nicht immer die beste Option.

Werte
  • CONTINUE

    Bei Erkennen eines Fehlers wird mit dem Laden der Datei fortgefahren. Die COPY-Anweisung gibt eine Fehlermeldung für maximal einen gefundenen Fehler pro Datendatei zurück.

    Beachten Sie, dass der Unterschied zwischen den Spaltenwerten ROWS_PARSED und ROWS_LOADED die Anzahl der Zeilen darstellt, die erkannte Fehler enthalten. Jede dieser Zeilen kann jedoch mehrere Fehler enthalten. Um alle Fehler in den Datendateien anzuzeigen, können Sie den Parameter VALIDATION_MODE verwenden oder die Funktion VALIDATE abfragen.

  • SKIP_FILE

    Bei Erkennen eines Fehlers wird die Datei übersprungen.

    Beachten Sie, dass bei der Aktion SKIP_FILE die gesamte Datei im Puffer gespeichert wird, unabhängig davon, ob Fehler gefunden werden oder nicht. Aus diesem Grund ist SKIP_FILE langsamer als CONTINUE oder ABORT_STATEMENT. Das Überspringen von Dateien bei nur wenigen Fehlern kann zu Verzögerungen und zur Vergeudung von Credits führen. Wenn Sie eine große Anzahl von Datensätzen aus Dateien laden, die keine logische Abgrenzung haben (z. B. weil die Dateien automatisch in groben Abständen generiert wurden), sollten Sie stattdessen CONTINUE angeben.

    Zusätzliche Muster:

    SKIP_FILE_num (z. B. SKIP_FILE_10)

    Überspringt die Datei, wenn die Anzahl der in der Datei gefundenen Fehlerzeilen gleich oder größer als die hier angegebene Anzahl ist.

    'SKIP_FILE_num%' (z. B. 'SKIP_FILE_10%')

    Überspringt die Datei, wenn der Prozentsatz der in der Datei gefundenen Fehlerzeilen den hier angegebenen Prozentsatz überschreitet.

  • ABORT_STATEMENT

    Bricht die Ladeoperation ab, wenn in einer Datendatei ein Fehler gefunden wird.

    Beachten Sie, dass die Ladeoperation nicht abgebrochen wird, wenn die Datendatei nicht gefunden werden kann (z. B. weil sie nicht vorhanden ist oder nicht auf sie zugegriffen werden kann), außer eine explizit im Parameter FILES angegebene Datendatei kann nicht gefunden werden.

Standard
Massenladen mit COPY

ABORT_STATEMENT

Snowpipe

SKIP_FILE

SIZE_LIMIT = num
Verwendung

Nur Laden von Daten

Definition

Zahl (>0), die die maximale Größe (in Byte) der zu ladenden Daten für eine gegebene COPY-Anweisung angibt. Wenn der Schwellenwert überschritten wird, stoppt die Operation COPY das Laden von Dateien. Diese Option wird häufig verwendet, um eine gemeinsame Gruppe von Dateien mit mehreren COPY-Anweisungen zu laden. Für jede Anweisung wird die Datenladung fortgesetzt, bis das angegebene SIZE_LIMIT überschritten ist und bevor zur nächsten Anweisung übergegangen wird.

Angenommen, eine Gruppe von Dateien in einem Stagingbereichspfad wäre jeweils 10 MB groß. Wenn mehrere COPY-Anweisungen SIZE_LIMIT auf 25000000 (25 MB) setzen, würde jede 3 Dateien laden. Das heißt, jede COPY-Operation würde nach Überschreiten des SIZE_LIMIT-Schwellenwerts abbrechen.

Beachten Sie, dass mindestens eine Datei unabhängig von dem für SIZE_LIMIT angegebenen Wert geladen wird, es sei denn, es ist keine Datei zu laden.

Standard

Null (keine Größenbeschränkung)

PURGE = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob die Datendateien nach erfolgreichem Laden der Daten automatisch aus dem Stagingbereich entfernt werden sollen.

Wenn diese Option auf TRUE gesetzt ist, erfolgt das Entfernen der erfolgreich geladenen Datendateien nach besten Kräften. Beachten Sie aber, dass derzeit kein Fehler zurückgegeben wird, wenn die Löschoperation aus irgendeinem Grund fehlschlägt. Wir empfehlen daher, dass Sie die im Stagingbereich befindlichen Dateien regelmäßig auflisten (mit LIST) und erfolgreich geladene Dateien ggf. manuell entfernen.

Standard

FALSE

RETURN_FAILED_ONLY = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, ob nur Dateien zurückgegeben werden sollen, die nicht in das Anweisungsergebnis geladen wurden.

Standard

FALSE

MATCH_BY_COLUMN_NAME = CASE_SENSITIVE | CASE_INSENSITIVE | NONE
Verwendung

Nur Laden von Daten

Definition

Zeichenfolge, die angibt, ob semistrukturierte Daten in Spalten der Zieltabelle geladen werden sollen, die den in den Daten dargestellten Spalten entsprechen.

Diese Kopieroption wird für die folgenden Datenformate unterstützt:

  • JSON

  • Avro

  • ORC

  • Parquet

Damit eine Spalte übereinstimmt, muss Folgendes zutreffen:

  • Die in den Daten dargestellte Spalte muss exakt den gleichen Namen haben wie die Spalte in der Tabelle. Die Kopieroption unterstützt die Groß- und Kleinschreibung von Spaltennamen. Die Spaltenreihenfolge spielt keine Rolle.

  • Die Spalte in der Tabelle muss einen Datentyp haben, der mit den Werten in der in den Daten dargestellten Spalte kompatibel ist. Beispielsweise können Zeichenfolgen-, Zahlen- und Boolesche Werte in eine Variant-Spalte geladen werden.

Werte
CASE_SENSITIVE | CASE_INSENSITIVE

Laden Sie semistrukturierte Daten in Spalten der Zieltabelle, die den in den Daten dargestellten Spalten entsprechen. Spaltennamen können zwischen Groß- und Kleinschreibung unterscheiden (CASE_SENSITIVE) oder nicht unterscheiden (CASE_INSENSITIVE).

Die COPY-Operation überprüft, ob mindestens eine Spalte in der Zieltabelle mit einer in den Datendateien dargestellten Spalte übereinstimmt. Wenn eine Übereinstimmung gefunden wird, werden die Werte der Datendateien in die entsprechenden Spalten geladen. Wenn keine Übereinstimmung gefunden wird, wird für jeden Datensatz in den Dateien ein Satz von NULL-Werten in die Tabelle geladen.

Bemerkung

  • Wenn in den Datendateien weitere, nicht übereinstimmende Spalten vorhanden sind, werden die Werte in diesen Spalten nicht geladen.

  • Wenn die Zieltabelle weitere, nicht übereinstimmende Spalten enthält, fügt die COPY-Operation in diese Spalten NULL-Werte ein. Diese Spalten müssen NULL-Werte unterstützen.

  • In der COPY-Anweisung darf keine Abfrage zur weiteren Transformation der Daten während des Ladevorgangs (d. h. COPY-Transformation) angegeben werden.

NONE

Die COPY-Operation lädt die semistrukturierten Daten in eine Variant-Spalte oder transformiert die Daten, wenn in der COPY-Anweisung eine Abfrage enthalten ist.

Bemerkung

Derzeit gelten folgende Einschränkungen:

  • MATCH_BY_COLUMN_NAME kann nicht mit dem Parameter VALIDATION_MODE in einer COPY-Anweisung verwendet werden, um die Stagingdaten zu überprüfen, anstatt sie in die Zieltabelle zu laden.

  • Nur Parquet-Daten. Wenn MATCH_BY_COLUMN_NAME auf CASE_SENSITIVE oder CASE_INSENSITIVE gesetzt ist, führt ein leerer Spaltenwert (z. B. "col1": "") zu einem Fehler.

Standard

NONE

ENFORCE_LENGTH = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Alternative Syntax für TRUNCATECOLUMNS mit umgekehrter Logik (zur Kompatibilität mit anderen Systemen)

Boolescher Wert, der angibt, ob Textzeichenfolgen, die die Länge der Zielspalte überschreiten, abgeschnitten werden sollen:

  • Wenn auf TRUE gesetzt, generiert die COPY-Anweisung beim Überschreiten der Länge der Zielspalte einen Fehler.

  • Wenn auf FALSE gesetzt, werden Zeichenfolgen automatisch auf die Länge der Zielspalte abgeschnitten.

Diese Kopieroption unterstützt CSV-Daten sowie Zeichenfolgenwerte in semistrukturierten Daten, wenn sie in separate Spalten von relationalen Tabellen geladen werden.

Bemerkung

  • Wenn die Länge der Spalte für die Zielzeichenfolge auf das Maximum eingestellt ist (z. B. VARCHAR (16777216)), kann eine eingehende Zeichenfolge diese Länge nicht überschreiten, andernfalls generiert der COPY-Befehl einen Fehler.

  • Dieser Parameter entspricht funktional dem Parameter TRUNCATECOLUMNS, weist aber das umgekehrte Verhalten auf. Dies wird aus Gründen der Kompatibilität mit anderen Datenbanken bereitgestellt. Zum Erzeugen der gewünschten Ausgabe muss nur einer der beiden Parameter in eine COPY-Anweisung aufgenommen werden.

Standard

TRUE

TRUNCATECOLUMNS = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Alternative Syntax für ENFORCE_LENGTH mit umgekehrter Logik (zur Kompatibilität mit anderen Systemen)

Boolescher Wert, der angibt, ob Textzeichenfolgen, die die Länge der Zielspalte überschreiten, abgeschnitten werden sollen:

  • Wenn auf TRUE gesetzt, werden Zeichenfolgen automatisch auf die Länge der Zielspalte abgeschnitten.

  • Wenn auf FALSE gesetzt, generiert die COPY-Anweisung beim Überschreiten der Länge der Zielspalte einen Fehler.

Diese Kopieroption unterstützt CSV-Daten sowie Zeichenfolgenwerte in semistrukturierten Daten, wenn sie in separate Spalten von relationalen Tabellen geladen werden.

Bemerkung

  • Wenn die Länge der Spalte für die Zielzeichenfolge auf das Maximum eingestellt ist (z. B. VARCHAR (16777216)), kann eine eingehende Zeichenfolge diese Länge nicht überschreiten, andernfalls generiert der COPY-Befehl einen Fehler.

  • Dieser Parameter entspricht funktional dem Parameter ENFORCE_LENGTH, weist aber das umgekehrte Verhalten auf. Dies wird aus Gründen der Kompatibilität mit anderen Datenbanken bereitgestellt. Zum Erzeugen der gewünschten Ausgabe muss nur einer der beiden Parameter in eine COPY-Anweisung aufgenommen werden.

Standard

FALSE

FORCE = TRUE | FALSE
Verwendung

Nur Laden von Daten

Definition

Boolescher Wert, der angibt, dass alle Dateien geladen werden sollen, unabhängig davon, ob sie bereits zuvor geladen und seitdem nicht geändert wurden. Beachten Sie, dass diese Option Dateien neu lädt und möglicherweise Daten in einer Tabelle dupliziert.

Standard

FALSE

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieses SQL-Befehls verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE ICEBERG TABLE

Schema

CREATE EXTERNAL VOLUME

Konto

Erforderlich, um ein neues externes Volume zu erstellen.

USAGE

Externes Volume

Erforderlich, um auf ein vorhandenes externes Volume zu verweisen.

CREATE INTEGRATION

Konto

Erforderlich, um eine neuen Katalogintegration zu erstellen.

USAGE

Katalogintegration

Erforderlich, um auf eine bestehende Katalogintegration zu verweisen.

Beachten Sie, dass für die Bearbeitung eines Objekts in einem Schema auch die Berechtigung USAGE für die übergeordnete Datenbank und das Schema erforderlich ist.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Ein Schema darf keine Tabellen und/oder Ansichten mit gleichem Namen enthalten. Beim Erstellen einer Tabelle:

    • Wenn im Schema bereits eine Ansicht mit dem gleichen Namen vorhanden ist, wird ein Fehler zurückgegeben und die Tabelle nicht erstellt.

    • Wenn bereits eine Tabelle mit dem gleichen Namen im Schema existiert, wird ein Fehler zurückgegeben, und die Tabelle wird nicht erstellt, es sei denn, das optionale Schlüsselwort OR REPLACE ist im Befehl enthalten.

  • CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.

    Das bedeutet, dass alle Abfragen, die parallel zur Operation CREATE OR REPLACE ICEBERG TABLE ausgeführt werden, entweder die alte oder die neue Version der Tabelle verwenden.

  • Ähnlich wie bei reservierten Schlüsselwörtern können ANSI-reservierte Funktionsnamen (z. B. CURRENT_DATE, CURRENT_TIMESTAMP) nicht als Spaltennamen verwendet werden.

  • Wenn Sie eine Tabelle neu erstellen (mit dem optionalen Schlüsselwort OR REPLACE), wird deren Verlauf gelöscht, wodurch alle Streams auf der Tabelle veraltet sind. Ein veralteter Stream ist unlesbar.

  • Cloud- und regionsübergreifende Iceberg-Tabellen werden derzeit nicht unterstützt, wenn Sie Snowflake als Iceberg-Katalog verwenden. Wenn CREATE ICEBERG TABLE eine Fehlermeldung wie "External volume <Name_des_Volumes> must have a STORAGE_LOCATION defined in the local region ..." zurückgibt, stellen Sie sicher, dass Ihr externes Volume einen aktiven Speicherort in derselben Region wie Ihr Snowflake-Konto angibt.

  • Wenn Sie Ihr externes Volume oder die Katalogintegration mit einem Bezeichner in doppelten Anführungszeichen erstellt haben, müssen Sie den Bezeichner genau so wie erstellt (einschließlich der doppelten Anführungszeichen) in Ihrer CREATE ICEBERG TABLE-Anweisung angeben. Fehlende Anführungszeichen können zu einem Object does not exist-Fehler (oder einer ähnlichen Art von Fehler) führen.

    Ein Beispiel dazu finden Sie im Abschnitt Beispiele (unter diesem Thema).

  • Vor Snowflake-Version 7.34 war ein Parameter namens BASE_LOCATION (in früheren Versionen auch als FILE_PATH bezeichnet) erforderlich, um aus Iceberg-Dateien im Objektspeicher eine Tabelle zu erstellen. Der Parameter gab einen relativen Pfad vom EXTERNAL_VOLUME-Speicherort der Tabelle an. Ab Snowflake-Versionen 7.34 geben Sie keinen BASE_LOCATION-Speicher mehr an, um Tabelle aus Iceberg-Dateien im Objektspeicher zu erstellen.

    Sie können weiterhin ein Skript oder eine Anweisung ausführen, die die frühere Version der CREATE ICEBERG TABLE-Syntax verwendet. Dies hat jedoch Auswirkungen auf den Wert, den Sie als metadata-file-relative-path-Pfad angeben, wenn Sie die Tabelle aktualisieren. Weitere Informationen dazu finden Sie unter ALTER ICEBERG TABLE … REFRESH.

  • CREATE TABLE … LIKE:

    • Wenn die Quelltabelle Gruppierungsschlüssel hat, dann hat auch die neue Tabelle Gruppierungsschlüssel. Standardmäßig wird Automatic Clustering für die neue Tabelle nicht angehalten – auch wenn Automatic Clustering für die Quelltabelle angehalten wurde.

  • CREATE TABLE … AS SELECT (CTAS):

    • Wenn Gruppierungsschlüssel in einer CTAS-Anweisung angegeben werden, gilt Folgendes:

      • Spaltendefinitionen sind erforderlich und müssen in der Anweisung ausdrücklich angegeben werden.

      • Standardmäßig wird Automatic Clustering für die neue Tabelle nicht angehalten – auch wenn Automatic Clustering für die Quelltabelle angehalten wurde.

      Die ORDER BY-Unterklausel in einer CREATE TABLE-Anweisung hat keinen Einfluss auf die Reihenfolge der Zeilen, die von zukünftigen SELECT-Anweisungen auf dieser Tabelle zurückgegeben werden. Um die Reihenfolge der Zeilen in zukünftigen SELECT-Anweisungen festzulegen, verwenden Sie in diesen Anweisungen eine ORDER BY-Unterklausel.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „Benutzer“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Beispiele

Iceberg-Tabelle mit Snowflake als Katalog erstellen

In diesem Beispiel wird eine Iceberg-Tabelle mit Snowflake als Iceberg-Katalog erstellt. Die resultierende Tabelle wird von Snowflake verwaltet und unterstützt Lese- und Schreibzugriff. Die Anweisung gibt einen Wert für den Parameter BASE_LOCATION an. Damit wird Snowflake mitgeteilt, wohin Tabellendaten und Metadaten auf dem externen Datenträger geschrieben werden sollen.

CREATE ICEBERG TABLE myTable  (amount NUMBER)
  CATALOG='SNOWFLAKE'
  EXTERNAL_VOLUME='myIcebergVolume'
  BASE_LOCATION='relative_path_from_external_volume';
Copy

Iceberg-Tabelle mit AWS Glue als Katalog erstellen

In diesem Beispiel wird eine Iceberg-Tabelle erstellt, die den AWS Glue-Datenkatalog verwendet. Um den Standard-Katalog-Namespace zu überschreiben und einen Katalog-Namespace für die Tabelle festzulegen, verwendet die Anweisung den optionalen Parameter CATALOG_NAMESPACE.

CREATE ICEBERG TABLE myGlueTable
  EXTERNAL_VOLUME='glueCatalogVolume'
  CATALOG='glueCatalogInt'
  CATALOG_TABLE_NAME='myGlueTable'
  CATALOG_NAMESPACE='icebergcatalogdb2';
Copy

Iceberg-Tabelle aus Iceberg-Metadaten im Objektspeicher erstellen

In diesem Beispiel wird eine Iceberg-Tabelle aus Iceberg-Metadaten erstellt, die in einem externen Cloudspeicher gespeichert sind. Dabei wird auch ein relativer Pfad zu den Tabellenmetadaten auf dem externen Datenträger angegeben.

CREATE ICEBERG TABLE myIcebergTable
  EXTERNAL_VOLUME='icebergMetadataVolume'
  CATALOG='icebergCatalogInt'
  METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';
Copy

Externes Volume oder Katalogintegration mit einem in Anführungszeichen gesetzten Bezeichner angeben

In diesem Beispiel wird eine Iceberg-Tabelle mit einem externen Volume und einer Katalogintegration erstellt, deren Bezeichner doppelte Anführungszeichen enthalten. Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist die Groß-/Kleinschreibung zu beachten, sie enthalten auch häufig Sonderzeichen.

Die Bezeichner "exvol_lower" und "catint_lower" werden genau so angegeben, wie sie erstellt wurden (einschließlich der doppelten Anführungszeichen). Fehlende Anführungszeichen können zu einem Object does not exist-Fehler (oder einer ähnlichen Art von Fehler) führen.

Weitere Informationen dazu finden Sie unter Bezeichner mit doppelten Anführungszeichen.

CREATE OR REPLACE ICEBERG TABLE itable_with_quoted_catalog
  EXTERNAL_VOLUME = '"exvol_lower"'
  CATALOG = '"catint_lower"'
  METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';
Copy