COPY INTO <Tabelle>

Lädt Daten aus Stagingdateien in eine vorhandene Tabelle. Die Dateien müssen bereits an einem der folgenden Orte bereitgestellt worden sein:

  • Benannter interner Stagingbereich (oder Tabellen-/Benutzer-Stagingbereich). Dateien können mit dem Befehl PUT bereitgestellt werden.

  • Benannter externer Stagingbereich, der auf einen externen Speicherort verweist (Amazon S3, Google Cloud Storage oder Microsoft Azure).

    Sie können nicht auf Daten in archivierten Cloudspeicherklassen zugreifen, die erst wiederhergestellt werden müssen, bevor sie abgerufen werden können. Zu diesen Archivspeicherklassen gehören zum Beispiel die Amazon S3-Speicherklassen Glacier Flexible Retrieval und Glacier Deep Archive oder Microsoft Azure Archive Storage.

  • Externer Speicherort (Amazon S3, Google Cloud Storage oder Microsoft Azure).

Siehe auch:

COPY INTO <Speicherort>

Syntax

/* Standard data load */
COPY INTO [<namespace>.]<table_name>
     FROM { internalStage | externalStage | externalLocation }
[ FILES = ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ]
[ PATTERN = '<regex_pattern>' ]
[ FILE_FORMAT = ( { FORMAT_NAME = '[<namespace>.]<file_format_name>' |
                    TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ] } ) ]
[ copyOptions ]
[ VALIDATION_MODE = RETURN_<n>_ROWS | RETURN_ERRORS | RETURN_ALL_ERRORS ]

/* Data load with transformation */
COPY INTO [<namespace>.]<table_name> [ ( <col_name> [ , <col_name> ... ] ) ]
     FROM ( SELECT [<alias>.]$<file_col_num>[.<element>] [ , [<alias>.]$<file_col_num>[.<element>] ... ]
            FROM { internalStage | externalStage } )
[ FILES = ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ]
[ PATTERN = '<regex_pattern>' ]
[ FILE_FORMAT = ( { FORMAT_NAME = '[<namespace>.]<file_format_name>' |
                    TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ] } ) ]
[ copyOptions ]
Copy

Wobei:

internalStage ::=
    @[<namespace>.]<int_stage_name>[/<path>]
  | @[<namespace>.]%<table_name>[/<path>]
  | @~[/<path>]
Copy
externalStage ::=
  @[<namespace>.]<ext_stage_name>[/<path>]
Copy
externalLocation (for Amazon S3) ::=
  's3://<bucket>[/<path>]'
  [ { STORAGE_INTEGRATION = <integration_name> } | { CREDENTIALS = ( {  { AWS_KEY_ID = '<string>' AWS_SECRET_KEY = '<string>' [ AWS_TOKEN = '<string>' ] } } ) } ]
  [ ENCRYPTION = ( [ TYPE = 'AWS_CSE' ] [ MASTER_KEY = '<string>' ] |
                   [ TYPE = 'AWS_SSE_S3' ] |
                   [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] ] |
                   [ TYPE = 'NONE' ] ) ]
Copy
externalLocation (for Google Cloud Storage) ::=
  'gcs://<bucket>[/<path>]'
  [ STORAGE_INTEGRATION = <integration_name> ]
  [ ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = '<string>' ] | [ TYPE = 'NONE' ] ) ]
Copy
externalLocation (for Microsoft Azure) ::=
  'azure://<account>.blob.core.windows.net/<container>[/<path>]'
  [ { STORAGE_INTEGRATION = <integration_name> } | { CREDENTIALS = ( [ AZURE_SAS_TOKEN = '<string>' ] ) } ]
  [ ENCRYPTION = ( [ TYPE = { 'AZURE_CSE' | 'NONE' } ] [ MASTER_KEY = '<string>' ] ) ]
Copy
formatTypeOptions ::=
-- If FILE_FORMAT = ( TYPE = CSV ... )
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     RECORD_DELIMITER = '<character>' | NONE
     FIELD_DELIMITER = '<character>' | NONE
     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 FILE_FORMAT = ( 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>' ... ] )
     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 FILE_FORMAT = ( 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 FILE_FORMAT = ( TYPE = ORC ... )
     TRIM_SPACE = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If FILE_FORMAT = ( TYPE = PARQUET ... )
     COMPRESSION = AUTO | SNAPPY | NONE
     BINARY_AS_TEXT = TRUE | FALSE
     USE_LOGICAL_TYPE = TRUE | FALSE
     TRIM_SPACE = TRUE | FALSE
     REPLACE_INVALID_CHARACTERS = TRUE | FALSE
     NULL_IF = ( '<string>' [ , '<string>' ... ] )
-- If FILE_FORMAT = ( 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
     LOAD_UNCERTAIN_FILES = TRUE | FALSE
Copy

Erforderliche Parameter

[namespace.]table_name

Gibt den Namen der Tabelle an, in die die Daten geladen werden.

Der Namespace gibt optional die Datenbank und/oder das Schema für die Tabelle in der Form database_name.schema_name oder schema_name an. Die Angabe ist optional, wenn in der Benutzersitzung aktuell eine Datenbank und ein Schema verwendet werden, andernfalls ist die Angabe obligatorisch.

FROM ...

Gibt den internen oder externen Speicherort an, an dem die Stagingdateien mit den zu ladenden Daten bereitgestellt werden:

@[namespace.]int_stage_name[/path]

Die Dateien befinden sich im angegebenen, benannten internen Stagingbereich.

@[namespace.]ext_stage_name[/path]

Die Dateien befinden sich im angegebenen, benannten externen Stagingbereich.

@[namespace.]%table_name[/path]

Die Dateien befinden sich im Stagingbereich der angegebenen Tabelle.

@~[/path]

Die Dateien befinden sich im Stagingbereich des aktuellen Benutzers.

's3://bucket[/path]'

Die Dateien befinden sich am angegebenen externen Speicherort (S3-Bucket). Es können zusätzliche Parameter erforderlich sein. Weitere Informationen dazu finden Sie unter Zusätzliche Cloudanbieterparameter (unter diesem Thema).

'gcs://bucket[/path]'

Die Dateien befinden sich am angegebenen externen Speicherort (Google Cloud Storage-Bucket). Es können zusätzliche Parameter erforderlich sein. Weitere Informationen dazu finden Sie unter Zusätzliche Cloudanbieterparameter (unter diesem Thema).

'azure://account.blob.core.windows.net/container[/path]'

Die Dateien befinden sich am angegebenen externen Speicherort (Azure-Container). Es können zusätzliche Parameter erforderlich sein. Weitere Informationen dazu finden Sie unter Zusätzliche Cloudanbieterparameter (unter diesem Thema).

Wobei:

  • namespace ist die Datenbank und/oder das Schema, in dem sich der interne oder externe Stagingbereich befindet, in Form von database_name.schema_name oder schema_name. Die Angabe ist optional, wenn in der Benutzersitzung aktuell eine Datenbank und ein Schema verwendet werden, andernfalls ist die Angabe obligatorisch.

  • path ist ein optionaler Pfad mit Unterscheidung von Groß-/Kleinschreibung für Dateien am Cloudspeicherort (d. h. Dateien haben Namen, die mit einer gemeinsamen Zeichenfolge beginnen), wodurch die zu ladenden Dateien eingegrenzt werden. Pfade werden von den verschiedenen Cloudspeicherdiensten alternativ als Präfixe oder Ordner bezeichnet.

    Relative Pfadmodifikatoren wie /./ und /../ werden literal interpretiert, da „Pfade“ literale Präfixe für einen Namen sind. Beispiel:

    -- S3 bucket
    COPY INTO mytable FROM 's3://mybucket/./../a.csv';
    
    -- Google Cloud Storage bucket
    COPY INTO mytable FROM 'gcs://mybucket/./../a.csv';
    
    -- Azure container
    COPY INTO mytable FROM 'azure://myaccount.blob.core.windows.net/mycontainer/./../a.csv';
    
    Copy

    In diesen COPY-Anweisungen sucht Snowflake nach einer Datei mit dem buchstäblichen Namen ./../a.csv am externen Speicherort.

Bemerkung

  • Wenn der Name des internen oder externen Stagingbereichs oder des Pfads Sonderzeichen, einschließlich Leerzeichen, enthält, schließen Sie die Zeichenfolge FROM ... in einfache Anführungszeichen ein.

  • Der Wert FROM ... muss eine literale Konstante sein. Der Wert kann keine SQL-Variable sein.

Zusätzliche Cloudanbieterparameter

STORAGE_INTEGRATION = integration_name oder . CREDENTIALS = ( cloud_specific_credentials )

Wird unterstützt, wenn der FROM-Wert der COPY-Anweisung die URI eines externen Speicherplatzes und nicht der Name eines externen Stagingbereichs ist.

Nur zum Laden von einem externen privaten/geschützten Cloudspeicherort erforderlich. Nicht erforderlich für öffentliche Buckets/Container

Gibt die Sicherheitsanmeldeinformationen für die Verbindung zum Cloudanbieter und für den Zugriff auf den privaten/geschützten Speichercontainer an, in dem die Datendateien bereitgestellt werden.

Amazon S3

STORAGE_INTEGRATION = integration_name

Gibt den Namen der Speicherintegration an, mit der die Authentifizierungsverantwortung für den externen Cloudspeicher an eine Snowflake-Entität für Identitäts- und Zugriffsverwaltung (IAM) delegiert wird. Weitere Details dazu finden Sie unter CREATE STORAGE INTEGRATION.

Bemerkung

Wir empfehlen dringend die Verwendung von Speicherintegrationen. Mit dieser Option wird vermieden, dass beim Erstellen von Stagingbereichen oder Laden von Daten mithilfe des Parameters CREDENTIALS Cloudspeicher-Anmeldeinformationen angegeben werden müssen.

CREDENTIALS = ( AWS_KEY_ID = 'string' AWS_SECRET_KEY = 'string' [ AWS_TOKEN = 'string' ] )

Gibt die Sicherheits-Anmeldeinformationen für die Verbindung mit AWS und den Zugriff auf den privaten/geschützten S3-Bucket an, in dem die zu ladenden Dateien bereitgestellt werden. Weitere Informationen finden Sie unter Konfigurieren des sicheren Zugriffs auf Amazon S3.

Die von Ihnen angegebenen Anmeldeinformationen hängen davon ab, ob Sie die Zugriffsberechtigungen von Snowflake für den Bucket einem/einer AWS IAM (Identity & Access Management)-Benutzer oder -Rolle zugeordnet haben:

  • IAM-Benutzer: Temporäre IAM-Zugangsdaten sind erforderlich. Temporäre (auch bekannt als „Scoped“) Anmeldeinformationen werden vom AWS Security Token Service (STS) generiert und bestehen aus drei Komponenten:

    • AWS_KEY_ID

    • AWS_SECRET_KEY

    • AWS_TOKEN

    Alle drei sind erforderlich, um auf einen privaten/geschützten Bucket zuzugreifen. Nach einem angegebenen Zeitraum verfallen die temporären Anmeldeinformationen und können nicht mehr verwendet werden. Sie müssen dann einen neuen Satz gültiger temporärer Anmeldeinformationen generieren.

    Wichtig

    COPY-Befehle enthalten komplexe Syntax und sensible Informationen, wie z. B. Anmeldeinformationen. Darüber hinaus werden sie häufig ausgeführt und oft in Skripten oder Arbeitsblättern gespeichert, was dazu führen kann, dass sensible Informationen versehentlich freigelegt werden. Mit dem Befehl COPY können permanente (auch bekannt als „langfristige“) Anmeldeinformationen verwendet werden; aus Sicherheitsgründen sollten Sie jedoch permanente Anmeldeinformationen in COPY-Befehlen nicht verwenden. Verwenden Sie stattdessen temporäre Anmeldeinformationen.

    Wenn Sie permanente Anmeldeinformationen verwenden müssen, verwenden Sie externe Stagingbereiche, für die die Anmeldeinformationen einmal eingegeben und sicher gespeichert werden, wodurch das Risiko einer Gefährdung minimiert wird.

  • IAM-Rolle: Lassen Sie die Sicherheitsanmeldeinformationen und Zugriffsschlüssel weg. Identifizieren Sie stattdessen die Rolle mit AWS_ROLE, und geben Sie den AWS-Rollen-ARN (Amazon Resource Name) an.

Google Cloud Storage

STORAGE_INTEGRATION = integration_name

Gibt den Namen der Speicherintegration an, mit der die Authentifizierungsverantwortung für den externen Cloudspeicher an eine Snowflake-Entität für Identitäts- und Zugriffsverwaltung (IAM) delegiert wird. Weitere Details dazu finden Sie unter CREATE STORAGE INTEGRATION.

Microsoft Azure

STORAGE_INTEGRATION = integration_name

Gibt den Namen der Speicherintegration an, mit der die Authentifizierungsverantwortung für den externen Cloudspeicher an eine Snowflake-Entität für Identitäts- und Zugriffsverwaltung (IAM) delegiert wird. Weitere Details dazu finden Sie unter CREATE STORAGE INTEGRATION.

Bemerkung

Wir empfehlen dringend die Verwendung von Speicherintegrationen. Mit dieser Option wird vermieden, dass beim Erstellen von Stagingbereichen oder Laden von Daten mithilfe des Parameters CREDENTIALS Cloudspeicher-Anmeldeinformationen angegeben werden müssen.

CREDENTIALS = ( AZURE_SAS_TOKEN = 'string' )

Gibt das SAS-Token (Shared Access Signature-Token) für die Verbindung mit Azure und den Zugriff auf den privaten/geschützten Bucket an, in dem die Dateien mit Daten bereitgestellt werden. Die Anmeldeinformationen werden von Azure generiert.

ENCRYPTION = ( cloud_specific_encryption )

Zur Verwendung in Ad-hoc-COPY-Anweisungen (Anweisungen, die nicht auf einen benannten externen Stagingbereich verweisen). Nur zum Laden von verschlüsselten Dateien erforderlich. Nicht erforderlich, wenn die Dateien unverschlüsselt sind. Gibt die Verschlüsselungseinstellungen an, die zum Entschlüsseln der verschlüsselten Dateien am Speicherort verwendet werden.

Amazon S3

ENCRYPTION = ( [ TYPE = 'AWS_CSE' ] [ MASTER_KEY = '<string>' ] | [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] ] | [ TYPE = 'NONE' ] )

TYPE = ...

Gibt den verwendeten Verschlüsselungstyp an. Mögliche Werte sind:

  • AWS_CSE: Clientseitige Verschlüsselung (erfordert einen MASTER_KEY-Wert). Derzeit kann der von Ihnen bereitgestellte clientseitige Hauptschlüssel nur ein symmetrischer Schlüssel sein. Beachten Sie, dass Snowflake bei Angabe eines MASTER_KEY-Werts davon ausgeht, dass TYPE = AWS_CSE (d. h. wenn ein MASTER_KEY-Wert angegeben wird, ist TYPE nicht erforderlich).

  • AWS_SSE_S3: Serverseitige Verschlüsselung, die keine zusätzlichen Verschlüsselungseinstellungen erfordert.

  • AWS_SSE_KMS: Serverseitige Verschlüsselung, die einen optionalen KMS_KEY_ID-Wert akzeptiert.

  • NONE: Keine Verschlüsselung.

Weitere Informationen zu den Verschlüsselungsarten finden Sie in der AWS-Dokumentation für clientseitige Verschlüsselung oder serverseitige Verschlüsselung.

MASTER_KEY = 'string' (gilt nur für AWS_CSE-Verschlüsselung)

Gibt den clientseitigen Hauptschlüssel an, mit dem die Dateien im Bucket verschlüsselt wurden. Der Hauptschlüssel muss ein 128-Bit- oder 256-Bit-Schlüssel in Base64-codierter Form sein.

KMS_KEY_ID = 'string' (gilt nur für AWS_SSE_KMS-Verschlüsselung)

Gibt optional die ID für den AWS KMS-verwalteten Schlüssel an, der zum Verschlüsseln von Dateien verwendet wird, die in den Bucket entladen wurden. Wenn kein Wert angegeben wird, werden Dateien beim Entladen mit Ihrer standardmäßigen KMS-Schlüssel-ID verschlüsselt.

Beachten Sie, dass dieser Wert beim Laden von Daten ignoriert wird.

Google Cloud Storage

ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' | 'NONE' ] [ KMS_KEY_ID = 'string' ] )

TYPE = ...

Gibt den verwendeten Verschlüsselungstyp an. Mögliche Werte sind:

KMS_KEY_ID = 'string' (gilt nur für GCS_SSE_KMS-Verschlüsselung)

Gibt optional die ID für den Cloud-KMS-verwalteten Schlüssel an, der zum Verschlüsseln von Dateien verwendet wird, die in den Bucket entladen wurden. Wenn kein Wert angegeben ist, werden Dateien beim Entladen in den Bucket mit Ihrer standardmäßigen KMS-Schlüssel-ID verschlüsselt.

Beachten Sie, dass dieser Wert beim Laden von Daten ignoriert wird. Die Ladeoperation sollte erfolgreich sein, wenn das Dienstkonto über ausreichende Berechtigungen zum Entschlüsseln von Daten im Bucket verfügt.

Microsoft Azure

ENCRYPTION = ( [ TYPE = 'AZURE_CSE' | 'NONE' ] [ MASTER_KEY = 'string' ] )

TYPE = ...

Gibt den verwendeten Verschlüsselungstyp an. Mögliche Werte sind:

MASTER_KEY = 'string' (gilt nur für AZURE_CSE-Verschlüsselung)

Gibt den clientseitigen Hauptschlüssel an, der zum Entschlüsseln von Dateien verwendet wird. Der Hauptschlüssel muss ein 128-Bit- oder 256-Bit-Schlüssel in Base64-codierter Form sein.

Transformationsparameter

( SELECT [alias.]$file_col_num[.element] [ , [alias.]$file_col_num[.element] ... ] FROM ... [ alias ] )

Erforderlich für die Transformation von Daten während des Ladevorgangs

Gibt einen expliziten Satz von Feldern/Spalten (getrennt durch Kommas) an, die aus den Staging-Datendateien geladen werden sollen. Die Felder/Spalten werden aus den Dateien mit einer SQL-Standardabfrage (d. h. SELECT-Liste) ausgewählt. Hierbei gilt Folgendes:

alias

Gibt einen optionalen Alias für den FROM-Wert an (z. B. d in COPY INTO t1 (c1) FROM (SELECT d.$1 FROM @mystage/file1.csv.gz d);).

file_col_num

Gibt die Positionsnummer des Feldes bzw. der Spalte (in der Datei) an, das/die die zu ladenden Daten enthält (1 für das erste Feld, 2 für das zweite Feld usw.).

element

Gibt den Pfad und Elementnamen eines sich wiederholenden Wertes in der Datendatei an (gilt nur für semistrukturierte Datendateien).

Die SELECT-Liste definiert einen nummerierten Satz von Feldern/Spalten in den Datendateien, aus denen Sie laden. Die Liste muss mit der Reihenfolge der Spalten in der Zieltabelle übereinstimmen. Mit dem optionalen Parameter ( col_name [ , col_name ... ] ) können Sie die Liste bestimmten Spalten in der Zieltabelle zuordnen.

Beachten Sie, dass die tatsächliche Feld-/Spaltenreihenfolge in den Datendateien von der Spaltenreihenfolge in der Zieltabelle abweichen kann. Es ist nur wichtig, dass die SELECT-Liste die Felder/Spalten in den Datendateien den entsprechenden Spalten in der Tabelle zuordnet.

Bemerkung

Die für Transformationen verwendete SELECT-Anweisung unterstützt nicht alle Funktionen. Eine vollständige Liste der unterstützten Funktionen sowie weitere Details zu den Transformationen beim Laden von Daten einschließlich Beispiele finden Sie in den Nutzungshinweisen unter Transformieren von Daten während eines Ladevorgangs.

Außerdem unterstützt die Datenladetransformation nur das Auswählen von Daten aus Benutzer-Stagingbereichen und benannten Stagingbereichen (intern oder extern).

( col_name [ , col_name ... ] )

Gibt optional eine explizite Liste von Tabellenspalten (getrennt durch Komma) an, in die Sie Daten einfügen möchten:

  • Die erste Spalte verbraucht die Werte, die aus dem ersten Feld bzw. der ersten Spalte aus den geladenen Dateien extrahiert wurden.

  • Die zweite Spalte verbraucht die Werte, die aus dem zweiten Feld bzw. der zweiten Spalte aus den geladenen Dateien extrahiert wurden.

  • Und so weiter, in der angegebenen Reihenfolge.

Spalten können in dieser Auflistung nicht wiederholt werden. Alle Spalten, die aus dieser Spaltenliste ausgeschlossen sind, werden mit ihrem Standardwert (NULL, falls nicht angegeben) gefüllt. Ausgeschlossene Spalten können jedoch keine Sequenz als Standardwert haben.

Optionale Parameter

FILES = ( 'file_name' [ , 'file_name' ... ] )

Gibt eine Liste von einem oder mehreren zu ladenden Dateinamen (getrennt durch Kommas) an. Die Dateien müssen bereits entweder am internen Staging-Speicherort von Snowflake oder an dem im Befehl angegebenen externen Staging-Speicherort bereitgestellt worden sein. Wenn eine der angegebenen Dateien nicht gefunden wird, bricht das Standardverhalten ON_ERROR = ABORT_STATEMENT den Ladevorgang ab, es sei denn, in der COPY-Anweisung wird explizit eine andere Option ON_ERROR gesetzt.

Die maximale Anzahl der Dateinamen, die angegeben werden können, beträgt 1.000.

Bemerkung

Nur für externe Stagingbereiche (Amazon S3, Google Cloud Storage oder Azure) wird der Dateipfad durch Verkettung der URL in der Stagingbereichsdefinition und der Liste der aufgelösten Dateinamen festgelegt.

Snowflake fügt jedoch implizit kein Trennzeichen zwischen Pfad und Dateinamen ein. Sie müssen explizit ein Trennzeichen (/) entweder am Ende der URL in der Stagingbereichsdefinition oder am Anfang jedes in diesem Parameter angegebenen Dateinamens angeben.

PATTERN = 'regex_pattern'

Eine Musterzeichenfolge mit regulären Ausdrücken, die in einfache Anführungszeichen eingeschlossen ist und die Dateinamen und/oder Pfade angibt, die übereinstimmen sollen.

Tipp

Um die beste Leistung zu erzielen, sollten Sie vermeiden, Muster anzuwenden, die eine große Anzahl von Dateien filtern.

Beachten Sie, dass der reguläre Ausdruck beim Massenladen von Daten anders angewendet wird als beim Laden von Daten mit Snowpipe.

  • Snowpipe schneidet alle Pfadsegmente in der Stagingbereichsdefinition vom Speicherort ab und wendet den regulären Ausdruck auf alle verbleibenden Pfadsegmente und Dateinamen an. Um die Stagingbereichsdefinition anzuzeigen, führen Sie den Befehl DESCRIBE STAGE für den Stagingbereich aus. Die URL-Eigenschaft besteht aus dem Namen des Buckets oder Containers und keinem, einem oder mehreren Pfadsegmenten. Wenn zum Beispiel der FROM-Speicherplatz in einer COPY INTO <Tabelle>-Anweisung @s/path1/path2/ ist und der URL-Wert für Stagingbereich @s s3://mybucket/path1/ ist, dann schneidet Snowpipe /path1/ aus dem Speicherort in der FROM-Klausel ab und wendet den regulären Ausdruck auf path2/ plus die Dateinamen im Pfad an.

  • Beim Massenladen von Daten wird der reguläre Ausdruck auf den gesamten Speicherort in der FROM-Klausel angewendet.

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

Gibt das Format der zu ladenden Datendateien an:

FORMAT_NAME = 'file_format_name'

Gibt ein bestehendes benanntes Dateiformat an, das zum Laden 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 Informationen finden Sie unter CREATE FILE FORMAT.

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

Gibt den Typ der Dateien an, die in die Tabelle geladen werden sollen. Wenn ein Formattyp angegeben ist, können zusätzliche formatspezifische Optionen angegeben werden. Weitere Informationen dazu finden Sie unter Formattypoptionen (unter diesem Thema).

Bemerkung

FORMAT_NAME und TYPE schließen sich gegenseitig aus. Die Angabe beider im gleichen COPY-Befehl kann zu unerwartetem Verhalten führen.

COPY_OPTIONS = ( ... )

Gibt eine oder mehrere Kopieroptionen für die geladenen Daten an. Weitere Details dazu finden Sie unter Kopieroptionen (unter diesem Thema).

VALIDATION_MODE = RETURN_n_ROWS | RETURN_ERRORS | RETURN_ALL_ERRORS

Zeichenfolge (Konstante), die den COPY-Befehl anweist, die Dateien zu validieren, anstatt sie in die angegebene Tabelle zu laden. Der COPY-Befehl testet dann diese Dateien auf Fehler, lädt aber keine Daten. Der Befehl validiert die zu ladenden Daten und gibt die Ergebnisse basierend auf der angegebenen Validierungsoption zurück:

Unterstützte Werte

Anmerkungen

RETURN_n_ROWS (z. B. RETURN_10_ROWS)

Überprüft die angegebene Anzahl von Zeilen, wenn keine Fehler aufgetreten sind. Schlägt andernfalls beim ersten Fehler in den Zeilen fehl.

RETURN_ERRORS

Liefert alle Fehler (Parsen, Konvertieren usw.) über alle in der COPY-Anweisung angegebenen Dateien hinweg.

RETURN_ALL_ERRORS

Gibt alle Fehler in allen in der COPY-Anweisung angegebenen Dateien zurück, einschließlich Dateien mit Fehlern, die während eines früheren Ladevorgangs teilweise geladen wurden, da die Kopieroption ON_ERROR während des Ladevorgangs auf CONTINUE gesetzt wurde.

Bemerkung

  • VALIDATION_MODE unterstützt keine COPY-Anweisungen, die Daten während eines Ladevorgangs transformieren. Wenn der Parameter angegeben wird, gibt die COPY-Anweisung einen Fehler zurück.

  • Verwenden Sie die Tabellenfunktion VALIDATE, um alle Fehler anzuzeigen, die bei einem vorherigen Laden aufgetreten sind. Beachten Sie, dass diese Funktion auch keine COPY-Anweisungen unterstützt, die Daten während eines Ladevorgangs transformieren.

Formattypoptionen (formatTypeOptions)

Je nach angegebenem Dateiformattyp (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

Zeichenfolge (Konstante), die den aktuellen Komprimierungsalgorithmus für die zu ladenden Datendateien angibt. Snowflake verwendet diese Option, um zu ermitteln, wie bereits komprimierte Datendateien komprimiert wurden, sodass die komprimierten Daten in den Dateien zum Laden extrahiert werden können.

Unterstützte Werte

Anmerkungen

AUTO

Der Komprimierungsalgorithmus wird automatisch erkannt, mit Ausnahme von Brotli-komprimierten Dateien, die derzeit nicht automatisch erkannt werden können. Wenn Sie Brotli-komprimierte Dateien laden, verwenden Sie explizit BROTLI anstelle von AUTO.

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

Zu ladende Datendateien wurden nicht komprimiert.

RECORD_DELIMITER = 'character' | NONE

Ein oder mehrere Zeichen, die Datensätze in einer Eingabedatei 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: Neue-Zeile-Zeichen. Beachten Sie, dass „neue Zeile“ logisch ist, sodass \r\n als neue Zeile für Dateien auf einer Windows-Plattform verstanden wird.

FIELD_DELIMITER = 'character' | NONE

Ein oder mehrere Einzelbyte- oder Multibyte-Zeichen, die Felder in einer Eingabedatei 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 (,)

PARSE_HEADER = TRUE | FALSE

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

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

Nur Laden von Daten

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

Zeichenfolge, die das Format der Datumswerte in den zu ladenden Datendateien definiert. Wenn ein Wert nicht angegeben oder AUTO ist, wird der Wert für den Sitzungsparameter DATE_INPUT_FORMAT verwendet.

Standard: AUTO

TIME_FORMAT = 'string' | AUTO

Zeichenfolge, die das Format der Zeitwerte in den zu ladenden Datendateien definiert. Wenn ein Wert nicht angegeben oder AUTO ist, wird der Wert für den Sitzungsparameter TIME_INPUT_FORMAT verwendet.

Standard: AUTO

TIMESTAMP_FORMAT = 'string' | AUTO

Zeichenfolge, die das Format der Zeitstempelwerte in den zu ladenden Datendateien definiert. Wenn ein Wert nicht angegeben oder AUTO ist, wird der Wert für den Sitzungsparameter TIMESTAMP_INPUT_FORMAT verwendet.

Standard: AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8

Zeichenfolge (Konstante), die das Codierungsformat für die Binäreingabe oder -ausgabe definiert. Diese Option gilt nur beim Laden von Daten in binäre Spalten einer Tabelle.

Standard: HEX

ESCAPE = 'character' | NONE
Verwendung

Laden und Entladen von Daten

Definition

Einzelbyte-Zeichen, das als Escapezeichen für 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 (z. B. \t für Tabulator, \n für neue Zeile, \r für Wagenrücklauf, \\ für Backslash).

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.

Standard

NONE

ESCAPE_UNENCLOSED_FIELD = 'character' | NONE
Verwendung

Laden und Entladen von Daten

Definition

Einzelbyte-Zeichen, das als Escapezeichen 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 (z. B. \t für Tabulator, \n für neue Zeile, \r für Wagenrücklauf, \\ für Backslash).

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.

Standard

Backslash (\\)

TRIM_SPACE = TRUE | FALSE

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). Verwenden Sie diese Option, um unerwünschte Leerzeichen während des Datenladevorgangs zu entfernen.

Weiteres Beispiel: Wenn ein führende oder nachstehende Leerzeichen Anführungszeichen umschließt, die Zeichenfolgen umschließen, können Sie das umgebende Leerzeichen mit der Option TRIM_SPACE und das Anführungszeichen mit der Option FIELD_OPTIONALLY_ENCLOSED_BY entfernen. Beachten Sie, dass jedes Leerzeichen innerhalb der Anführungszeichen erhalten bleibt.

Angenommen, das Feldtrennzeichen ist beispielsweise | und FIELD_OPTIONALLY_ENCLOSED_BY = '"'.

|"Hello world"|
|" Hello world "|
| "Hello world" |
Copy

wird zu:

+---------------+
| C1            |
|----+----------|
| Hello world   |
|  Hello world  |
| Hello world   |
+---------------+
Copy

Standard: FALSE

FIELD_OPTIONALLY_ENCLOSED_BY = 'character' | NONE

Zeichen, das verwendet wird, um Zeichenfolgen einzuschließen. Der Wert kann NONE, ein einfaches Anführungszeichen (') oder ein doppeltes Anführungszeichen (") sein. Zur Verwendung des einfachen Anführungszeichens verwenden Sie die oktale oder hexadezimale Darstellung (0x27) oder das doppelte einfache Anführungszeichen als Escape-Zeichen ('').

Wenn ein Feld dieses Zeichen enthält, können Sie es mit dem gleichen Zeichen einschließen. 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' ... ] )

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.

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 \\ (Standard) ist)

ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE

Boolescher Wert, der angibt, ob ein Parsing-Fehler generiert werden soll, wenn die Anzahl der durch Trennzeichen begrenzten Spalten (d. h. Felder) in einer Eingabedatendatei 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 von dem für diese Option 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 INTO <Tabelle>), 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

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

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

Boolescher Wert, der angibt, 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 INTO <Tabelle>-Befehl einen Fehler.

Standard: TRUE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE

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'

Zeichenfolge (Konstante), die den Zeichensatz der Quelldaten 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

Zeichenfolge (Konstante), die den aktuellen Komprimierungsalgorithmus für die zu ladenden Datendateien angibt. Snowflake verwendet diese Option, um zu ermitteln, wie bereits komprimierte Datendateien komprimiert wurden, sodass die komprimierten Daten in den Dateien zum Laden extrahiert werden können.

Unterstützte Werte

Anmerkungen

AUTO

Der Komprimierungsalgorithmus wird automatisch erkannt, mit Ausnahme von Brotli-komprimierten Dateien, die derzeit nicht automatisch erkannt werden können. Wenn Sie Brotli-komprimierte Dateien laden, verwenden Sie explizit BROTLI anstelle von AUTO.

GZIP

BZ2

BROTLI

ZSTD

DEFLATE

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

RAW_DEFLATE

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

NONE

Zeigt an, dass die Dateien zum Laden von Daten nicht komprimiert wurden.

Standard: AUTO

DATE_FORMAT = 'string' | AUTO

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

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

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

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

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 der Datenladeoperation 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' , ... ] )

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)

ENABLE_OCTAL = TRUE | FALSE

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

Standard: FALSE

ALLOW_DUPLICATE = TRUE | FALSE

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

Standard: FALSE

STRIP_OUTER_ARRAY = TRUE | FALSE

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

Standard: FALSE

STRIP_NULL_VALUES = TRUE | FALSE

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

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

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

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

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

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

TYPE = AVRO

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

Zeichenfolge (Konstante), die den aktuellen Komprimierungsalgorithmus für die zu ladenden Datendateien angibt. Snowflake verwendet diese Option, um zu ermitteln, wie bereits komprimierte Datendateien komprimiert wurden, sodass die komprimierten Daten in den Dateien zum Laden extrahiert werden können.

Unterstützte Werte

Anmerkungen

AUTO

Der Komprimierungsalgorithmus wird automatisch erkannt, mit Ausnahme von Brotli-komprimierten Dateien, die derzeit nicht automatisch erkannt werden können. Wenn Sie Brotli-komprimierte Dateien laden, verwenden Sie explizit BROTLI anstelle von AUTO.

GZIP

BROTLI

ZSTD

DEFLATE

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

RAW_DEFLATE

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

NONE

Zu ladende Datendateien wurden nicht komprimiert.

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

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 der Datenladeoperation 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

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

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' , ... ] )

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

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 der Datenladeoperation 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

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

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' , ... ] )

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 | SNAPPY | NONE

Zeichenfolge (Konstante), die den aktuellen Komprimierungsalgorithmus für die zu ladenden Datendateien angibt. Snowflake verwendet diese Option, um zu ermitteln, wie bereits komprimierte Datendateien komprimiert wurden, sodass die komprimierten Daten in den Dateien zum Laden extrahiert werden können.

Unterstützte Werte

Anmerkungen

AUTO

Komprimierungsalgorithmus automatisch erkannt. Unterstützt die folgenden Komprimierungsalgorithmen: Brotli, gzip, Lempel-Ziv-Oberhumer (LZO), LZ4, Snappy und Zstandard v0.8 (und höher).

SNAPPY

NONE

Zu ladende Datendateien wurden nicht komprimiert.

BINARY_AS_TEXT = TRUE | FALSE

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

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 der Datenladeoperation 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

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.

Standard: FALSE

REPLACE_INVALID_CHARACTERS = TRUE | FALSE

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

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' , ... ] )

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

Zeichenfolge (Konstante), die den aktuellen Komprimierungsalgorithmus für die zu ladenden Datendateien angibt. Snowflake verwendet diese Option, um zu ermitteln, wie bereits komprimierte Datendateien komprimiert wurden, sodass die komprimierten Daten in den Dateien zum Laden extrahiert werden können.

Unterstützte Werte

Anmerkungen

AUTO

Der Komprimierungsalgorithmus wird automatisch erkannt, mit Ausnahme von Brotli-komprimierten Dateien, die derzeit nicht automatisch erkannt werden können. Wenn Sie Brotli-komprimierte Dateien laden, verwenden Sie explizit BROTLI anstelle von AUTO.

GZIP

BZ2

BROTLI

ZSTD

DEFLATE

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

RAW_DEFLATE

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

NONE

Zu ladende Datendateien wurden nicht komprimiert.

Standard: AUTO

IGNORE_UTF8_ERRORS = TRUE | FALSE

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

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

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

Standard: FALSE

STRIP_OUTER_ELEMENT = TRUE | FALSE

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

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

Standard: FALSE

DISABLE_AUTO_CONVERT = TRUE | FALSE

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

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

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

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)

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

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
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
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
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
Definition

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

Wichtig

Verwenden Sie die Kopieroption MATCH_BY_COLUMN_NAME nicht, wenn Sie Daten während eines Ladevorgangs umwandeln, da die gleichzeitige Verwendung beider Optionen zu unerwarteten Ergebnissen führt.

Folgende Syntax ist beispielsweise nicht zulässig:

COPY INTO [<namespace>.]<table_name> [ ( <col_name> [ , <col_name> ... ] ) ]
FROM ( SELECT [<alias>.]$<file_col_num>[.<element>] [ , [<alias>.]$<file_col_num>[.<element>] ... ]
    FROM { internalStage | externalStage } )
[ FILES = ( '<file_name>' [ , '<file_name>' ] [ , ... ] ) ]
[ PATTERN = '<regex_pattern>' ]
[ FILE_FORMAT = ( { FORMAT_NAME = '[<namespace>.]<file_format_name>' |
            TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ] } ) ]
MATCH_BY_COLUMN_NAME = CASE_SENSITIVE | CASE_INSENSITIVE | NONE
[ other copyOptions ]
Copy

Verwenden Sie je nach Ihren Geschäftsanforderungen entweder MATCH_BY_COLUMN_NAME oder COPY-Transformationen, aber verwenden Sie diese beiden niemals zusammen. Weitere Informationen dazu finden Sie unter Transformieren von Daten während eines Ladevorgangs.

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

  • JSON

  • Avro

  • ORC

  • Parquet

  • CSV (Vorschau-Feature – Offen)

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.

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.

Standard

NONE

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.

ENFORCE_LENGTH = TRUE | FALSE
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.

Standard

TRUE

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.

TRUNCATECOLUMNS = TRUE | FALSE
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.

Standard

FALSE

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.

FORCE = TRUE | FALSE
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 erneut lädt und dadurch Daten in einer Tabelle dupliziert.

Standard

FALSE

LOAD_UNCERTAIN_FILES = TRUE | FALSE
Definition

Boolescher Wert, der angibt, dass Dateien geladen werden sollen, bei denen der Ladestatus unbekannt ist. Der Befehl COPY überspringt diese Dateien standardmäßig.

Der Ladestatus ist unbekannt, wenn alle der folgenden Bedingungen erfüllt sind:

  • Das LAST_MODIFIED-Datum der Datei (d. h. das Datum, an dem die Datei bereitgestellt wurde) ist älter als 64 Tage.

  • Der ursprüngliche Datensatz wurde mehr als 64 Tage zuvor in die Tabelle geladen.

  • Wenn die Datei bereits erfolgreich in die Tabelle geladen wurde, trat dieses Ereignis vor mehr als 64 Tage auf.

Um den Befehl COPY zum Laden aller Dateien zu zwingen, unabhängig davon, ob der Ladestatus bekannt ist, verwenden Sie stattdessen die Option FORCE.

Weitere Informationen zu Unsicherheiten beim Ladestatus finden Sie unter Laden älterer Dateien.

Standard

FALSE

Nutzungshinweise

  • Das Schlüsselwort DISTINCT in SELECT-Anweisungen wird nicht vollständig unterstützt. Das Angeben des Schlüsselworts kann zu inkonsistentem oder unerwartetem Verhalten der ON_ERROR-Kopieroptionen führen.

  • Wird nur aus Google Cloud Storage geladen: Die Liste der für einen externen Stagingbereich zurückgegebenen Objekte enthält möglicherweise einen oder mehrere „Verzeichnis-Blobs“, also im Wesentlichen Pfade, die mit einem Schrägstrich (/) enden, z. B.:

    LIST @my_gcs_stage;
    
    +---------------------------------------+------+----------------------------------+-------------------------------+
    | name                                  | size | md5                              | last_modified                 |
    |---------------------------------------+------+----------------------------------+-------------------------------|
    | my_gcs_stage/load/                    |  12  | 12348f18bcb35e7b6b628ca12345678c | Mon, 11 Sep 2019 16:57:43 GMT |
    | my_gcs_stage/load/data_0_0_0.csv.gz   |  147 | 9765daba007a643bdff4eae10d43218y | Mon, 11 Sep 2019 18:13:07 GMT |
    +---------------------------------------+------+----------------------------------+-------------------------------+
    
    Copy

    Diese Blobs werden aufgelistet, wenn Verzeichnisse über die Google Cloud Platform Console erstellt werden, anstatt andere von Google bereitgestellte Tools zu verwenden.

    COPY-Anweisungen, die auf einen Stagingbereich verweisen, können fehlschlagen, wenn die Objektliste Verzeichnis-Blobs enthält. Um Fehler durch Dateilisten von Stagingbereichen zu vermeiden, die Verzeichnis-Blobs enthalten, empfehlen wir die Verwendung der Dateimustererkennung (d. h. die PATTERN-Klausel) zum Erkennen der einzubeziehenden Dateien. Ein Beispiel finden Sie unter Laden mit Mustererkennung (unter diesem Thema). Alternativ können Sie in der COPY-Anweisung ON_ERROR = SKIP_FILE festlegen.

  • STORAGE_INTEGRATION, CREDENTIALS und ENCRYPTION gelten nur, wenn Sie direkt von einem privaten/geschützten Speicherort laden:

    • Wenn Sie aus einem öffentlichen Bucket laden, ist kein sicherer Zugriff erforderlich.

    • Wenn Sie aus einem benannten externen Stagingbereich laden, liefert der Stagingbereich alle Anmeldeinformationen, die für den Zugriff auf den Bucket erforderlich sind.

  • Wenn bei der Ausführung des Befehls COPY-Fehler auftreten, können Sie nach Abschluss des Befehls die Dateien, die die Fehler verursacht haben, mit der Tabellenfunktion VALIDATE überprüfen.

    Bemerkung

    Die Funktion VALIDATE gibt nur die Ausgabe für COPY-Befehle zurück, die zum Laden von Standarddaten verwendet werden. Sie unterstützt keine COPY-Befehle, die Transformationen während des Ladens von Daten ausführen (z. B. Laden einer Teilmenge von Datenspalten oder Neuordnen von Datenspalten).

  • Wenn Sie nicht ausdrücklich FORCE = TRUE als eine der Kopieroptionen angeben, ignoriert der Befehl Staging-Datendateien, die bereits in die Tabelle geladen wurden. Um die Daten neu zu laden, müssen Sie entweder FORCE = TRUE angeben oder die Datei ändern und erneut bereitstellen, wodurch eine neue Prüfsumme generiert wird.

  • Der Befehl COPY validiert keine Datentypkonvertierungen für Parquet-Dateien.

Ausgabe

Der Befehl gibt die folgenden Spalten zurück:

Spaltenname

Datentyp

Beschreibung

FILE

TEXT

Name der Quelldatei und relativer Pfad zur Datei

STATUS

TEXT

Status: geladen, Laden fehlgeschlagen oder teilweise geladen

ROWS_PARSED

NUMBER

Anzahl der Zeilen, die von der Quelldatei geparst wurden

ROWS_LOADED

NUMBER

Anzahl der aus der Quelldatei geladenen Zeilen

ERROR_LIMIT

NUMBER

Wenn die Anzahl der Fehler diese Grenze erreicht, dann brechen Sie ab

ERRORS_SEEN

NUMBER

Anzahl der Fehlerzeilen in der Quelldatei

FIRST_ERROR

TEXT

Erster Fehler der Quelldatei

FIRST_ERROR_LINE

NUMBER

Zeilennummer des ersten Fehlers

FIRST_ERROR_CHARACTER

NUMBER

Position des ersten Fehlerzeichens

FIRST_ERROR_COLUMN_NAME

TEXT

Spaltenname des ersten Fehlers

Beispiele

Beispiele für Transformationen beim Laden von Daten finden Sie unter Transformieren von Daten während eines Ladevorgangs.

Laden von Dateien aus einem internen Stagingbereich

Bemerkung

In diesen Beispielen wird davon ausgegangen, dass die Dateien vorher mit dem Befehl PUT in den Stagingbereich kopiert wurden.

Laden von Dateien aus einem benannten internen Stagingbereich in eine Tabelle:

COPY INTO mytable
FROM @my_int_stage;
Copy

Laden von Dateien aus dem Tabellen-Stagingbereich in die Tabelle:

COPY INTO mytable
FILE_FORMAT = (TYPE = CSV);
Copy

Bemerkung

Beim Kopieren von Daten aus Dateien an einem Tabellenspeicherort kann die FROM-Klausel weggelassen werden, da Snowflake automatisch nach Dateien am Speicherort der Tabelle sucht.

Laden Sie Dateien aus dem persönlichen Stagingbereich des Benutzers in eine Tabelle:

COPY INTO mytable from @~/staged
FILE_FORMAT = (FORMAT_NAME = 'mycsv');
Copy

Laden von Dateien aus einem benannten externen Stagingbereich

Laden Sie Dateien von einem benannten externen Stagingbereich, den Sie zuvor mit dem Befehl CREATE STAGE erstellt haben. Der benannte externe Stagingbereich verweist auf einen externen Speicherort (Amazon S3, Google Cloud Storage oder Microsoft Azure) und enthält alle Anmeldeinformationen und andere Details, die für den Zugriff auf den Speicherort erforderlich sind:

COPY INTO mycsvtable
  FROM @my_ext_stage/tutorials/dataloading/contacts1.csv;
Copy

Laden von Dateien mit Spaltenabgleich

Laden Sie Dateien von einem benannten externen Stagingbereich in die Tabelle unter Verwendung der Kopieroption MATCH_BY_COLUMN_NAME, um die Spaltennamen in den Dateien unter Berücksichtigung der Groß-/Kleinschreibung mit den in der Tabelle definierten Spaltennamen abzugleichen. Bei dieser Option muss die Reihenfolge der Spalten in der Datei nicht mit der Reihenfolge der Spalten in der Tabelle übereinstimmen.

COPY INTO mytable
  FROM @my_ext_stage/tutorials/dataloading/sales.json.gz
  FILE_FORMAT = (TYPE = 'JSON')
  MATCH_BY_COLUMN_NAME='CASE_INSENSITIVE';
Copy

Laden von Dateien direkt von einem externen Speicherort

Im folgenden Beispiel werden alle Dateien mit dem Präfix data/files unter Verwendung eines benannten my_csv_format-Dateiformats von einem Speicherort (Amazon S3, Google Cloud Storage oder Microsoft Azure) geladen:

Amazon S3

Greifen Sie auf den referenzierten S3-Bucket mittels einer referenzierten Speicherintegration namens myint zu. Beachten Sie, dass in beiden Beispielen der Wert MASTER_KEY verkürzt wird:

COPY INTO mytable
  FROM s3://mybucket/data/files
  STORAGE_INTEGRATION = myint
  ENCRYPTION=(MASTER_KEY = 'eSx...')
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Greifen Sie mit den angegebenen Anmeldeinformationen auf den referenzierten S3-Bucket zu:

COPY INTO mytable
  FROM s3://mybucket/data/files
  CREDENTIALS=(AWS_KEY_ID='$AWS_ACCESS_KEY_ID' AWS_SECRET_KEY='$AWS_SECRET_ACCESS_KEY')
  ENCRYPTION=(MASTER_KEY = 'eSx...')
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Google Cloud Storage

Greifen Sie mit einer referenzierten Speicherintegration namens myint auf den referenzierten GCS-Bucket zu:

COPY INTO mytable
  FROM 'gcs://mybucket/data/files'
  STORAGE_INTEGRATION = myint
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Microsoft Azure

Greifen Sie auf den referenzierten Container mittels einer referenzierten Speicherintegration namens myint zu. Beachten Sie, dass in beiden Beispielen der Wert MASTER_KEY verkürzt wird:

COPY INTO mytable
  FROM 'azure://myaccount.blob.core.windows.net/data/files'
  STORAGE_INTEGRATION = myint
  ENCRYPTION=(TYPE='AZURE_CSE' MASTER_KEY = 'kPx...')
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Greifen Sie mit den bereitgestellten Anmeldeinformationen auf den referenzierten Container zu:

COPY INTO mytable
  FROM 'azure://myaccount.blob.core.windows.net/mycontainer/data/files'
  CREDENTIALS=(AZURE_SAS_TOKEN='?sv=2016-05-31&ss=b&srt=sco&sp=rwdl&se=2018-06-27T10:05:50Z&st=2017-06-27T02:05:50Z&spr=https,http&sig=bgqQwoXwxzuD2GJfagRg7VOS8hzNr3QLT7rhS8OFRLQ%3D')
  ENCRYPTION=(TYPE='AZURE_CSE' MASTER_KEY = 'kPx...')
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Laden mit Mustererkennung

Laden Sie Dateien aus dem Stagingbereich der Tabelle in die Tabelle, indem Sie die Mustererkennung verwenden, um nur Daten aus komprimierten CSV-Dateien in jedem Pfad zu laden:

COPY INTO mytable
  FILE_FORMAT = (TYPE = 'CSV')
  PATTERN='.*/.*/.*[.]csv[.]gz';
Copy

Wobei .* als „null oder mehr Vorkommen eines Zeichens“ interpretiert wird. Die eckigen Klammern schließen das Punktzeichen (.) vor einer Dateierweiterung ein.

Laden Sie Dateien aus dem Stagingbereich der Tabelle in die Tabelle, indem Sie die Mustererkennung verwenden, um nur unkomprimierte CSV-Dateien zu laden, deren Namen die Zeichenfolge sales enthalten.

COPY INTO mytable
  FILE_FORMAT = (FORMAT_NAME = myformat)
  PATTERN='.*sales.*[.]csv';
Copy

Laden von JSON-Daten in eine VARIANT-Spalte

Im folgenden Beispiel werden JSON-Daten in eine Tabelle mit einer einzelnen Spalte vom Typ VARIANT geladen.

Das gestufte JSON-Array besteht aus drei Objekten, die durch Neu-Zeile-Zeichen getrennt sind:

[{
    "location": {
      "city": "Lexington",
      "zip": "40503",
      },
      "sq__ft": "1000",
      "sale_date": "4-25-16",
      "price": "75836"
},
{
    "location": {
      "city": "Belmont",
      "zip": "02478",
      },
      "sq__ft": "1103",
      "sale_date": "6-18-16",
      "price": "92567"
}
{
    "location": {
      "city": "Winchester",
      "zip": "01890",
      },
      "sq__ft": "1122",
      "sale_date": "1-31-16",
      "price": "89921"
}]
Copy
/* Create a JSON file format that strips the outer array. */

CREATE OR REPLACE FILE FORMAT json_format
  TYPE = 'JSON'
  STRIP_OUTER_ARRAY = TRUE;

/* Create an internal stage that references the JSON file format. */

CREATE OR REPLACE STAGE mystage
  FILE_FORMAT = json_format;

/* Stage the JSON file. */

PUT file:///tmp/sales.json @mystage AUTO_COMPRESS=TRUE;

/* Create a target table for the JSON data. */

CREATE OR REPLACE TABLE house_sales (src VARIANT);

/* Copy the JSON data into the target table. */

COPY INTO house_sales
   FROM @mystage/sales.json.gz;

SELECT * FROM house_sales;

+---------------------------+
| SRC                       |
|---------------------------|
| {                         |
|   "location": {           |
|     "city": "Lexington",  |
|     "zip": "40503"        |
|   },                      |
|   "price": "75836",       |
|   "sale_date": "4-25-16", |
|   "sq__ft": "1000",       |
|   "type": "Residential"   |
| }                         |
| {                         |
|   "location": {           |
|     "city": "Belmont",    |
|     "zip": "02478"        |
|   },                      |
|   "price": "92567",       |
|   "sale_date": "6-18-16", |
|   "sq__ft": "1103",       |
|   "type": "Residential"   |
| }                         |
| {                         |
|   "location": {           |
|     "city": "Winchester", |
|     "zip": "01890"        |
|   },                      |
|   "price": "89921",       |
|   "sale_date": "1-31-16", |
|   "sq__ft": "1122",       |
|   "type": "Condo"         |
| }                         |
+---------------------------+
Copy

Erneutes Laden von Dateien

Fügen Sie FORCE = TRUE zu einem COPY-Befehl hinzu, um Daten aus einer Gruppe von Staging-Datendateien, die sich nicht geändert haben (d. h. die dieselbe Prüfsumme wie beim ersten Laden haben), erneut zu laden (zu duplizieren).

Im folgenden Beispiel lädt der erste Befehl die angegebenen Dateien und der zweite Befehl erzwingt das erneute Laden derselben Dateien (doppelte Zeilen), obwohl sich der Inhalt der Dateien nicht geändert hat:

COPY INTO load1 FROM @%load1/data1/
    FILES=('test1.csv', 'test2.csv');

COPY INTO load1 FROM @%load1/data1/
    FILES=('test1.csv', 'test2.csv')
    FORCE=TRUE;
Copy

Löschen von Dateien nach dem Laden

Laden Sie Dateien aus dem Tabellen-Stagingbereich in die Tabelle, und löschen Sie die Dateien nach dem Laden. Standardmäßig löscht COPY die geladenen Dateien nicht vom Speicherort. So löschen Sie die Dateien nach dem Laden:

  • Setzen Sie PURGE=TRUE für die Tabelle, um anzugeben, dass alle Dateien, die erfolgreich in die Tabelle geladen wurden, nach dem Laden gelöscht werden:

    ALTER TABLE mytable SET STAGE_COPY_OPTIONS = (PURGE = TRUE);
    
    COPY INTO mytable;
    
    Copy
  • Sie können auch jede der Kopieroptionen direkt im Befehl COPY überschreiben:

    COPY INTO mytable PURGE = TRUE;
    
    Copy

Validierung von bereitgestellten Dateien

Validieren Sie Dateien in einem Stagingbereich ohne Laden:

  • Führen Sie den Befehl COPY im Validierungsmodus aus, und zeigen Sie alle Fehler an:

    COPY INTO mytable VALIDATION_MODE = 'RETURN_ERRORS';
    
    +-------------------------------------------------------------------------------------------------------------------------------+------------------------+------+-----------+-------------+----------+--------+-----------+----------------------+------------+----------------+
    |                                                         ERROR                                                                 |            FILE        | LINE | CHARACTER | BYTE_OFFSET | CATEGORY |  CODE  | SQL_STATE |   COLUMN_NAME        | ROW_NUMBER | ROW_START_LINE |
    +-------------------------------------------------------------------------------------------------------------------------------+------------------------+------+-----------+-------------+----------+--------+-----------+----------------------+------------+----------------+
    | Field delimiter ',' found while expecting record delimiter '\n'                                                               | @MYTABLE/data1.csv.gz  | 3    | 21        | 76          | parsing  | 100016 | 22000     | "MYTABLE"["QUOTA":3] | 3          | 3              |
    | NULL result in a non-nullable column. Use quotes if an empty field should be interpreted as an empty string instead of a null | @MYTABLE/data3.csv.gz  | 3    | 2         | 62          | parsing  | 100088 | 22000     | "MYTABLE"["NAME":1]  | 3          | 3              |
    | End of record reached while expected to parse column '"MYTABLE"["QUOTA":3]'                                                   | @MYTABLE/data3.csv.gz  | 4    | 20        | 96          | parsing  | 100068 | 22000     | "MYTABLE"["QUOTA":3] | 4          | 4              |
    +-------------------------------------------------------------------------------------------------------------------------------+------------------------+------+-----------+-------------+----------+--------+-----------+----------------------+------------+----------------+
    
    Copy
  • Führen Sie den Befehl COPY im Validierungsmodus für eine bestimmte Anzahl von Zeilen aus. In diesem Beispiel stößt der erste Lauf in der angegebenen Anzahl von Zeilen auf keine Fehler und wird erfolgreich abgeschlossen, wobei die Informationen so angezeigt werden, wie sie beim Laden in die Tabelle erscheinen. Der zweite Lauf stößt auf einen Fehler in der angegebenen Anzahl von Zeilen und schlägt mit dem aufgetretenen Fehler fehl:

    COPY INTO mytable VALIDATION_MODE = 'RETURN_2_ROWS';
    
    +--------------------+----------+-------+
    |        NAME        |    ID    | QUOTA |
    +--------------------+----------+-------+
    | Joe Smith          |  456111  | 0     |
    | Tom Jones          |  111111  | 3400  |
    +--------------------+----------+-------+
    
    COPY INTO mytable VALIDATION_MODE = 'RETURN_3_ROWS';
    
    FAILURE: NULL result in a non-nullable column. Use quotes if an empty field should be interpreted as an empty string instead of a null
      File '@MYTABLE/data3.csv.gz', line 3, character 2
      Row 3, column "MYTABLE"["NAME":1]
    
    Copy