- Kategorien:
CREATE TABLE¶
Erstellt eine neue Tabelle im aktuellen/angegebenen Schema oder ersetzt eine bestehende Tabelle. Eine Tabelle kann mehrere Spalten haben, wobei jede Spaltendefinition aus einem Namen, einem Datentyp und optional der Angabe besteht, ob für die Spalte Folgendes gilt:
Sie erfordert einen Wert (NOT NULL).
Sie hat einen Standardwert.
Sie hat Einschränkung bezüglich der referenziellen Integrität (Primärschlüssel, Fremdschlüssel usw.).
Darüber hinaus unterstützt dieser Befehl die folgenden Varianten:
CREATE TABLE … AS SELECT (erstellt eine ausgefüllte Tabelle; auch als CTAS bezeichnet)
CREATE TABLE … LIKE (erstellt eine leere Kopie einer bestehenden Tabelle)
CREATE TABLE … CLONE (erstellt einen Klon einer bestehenden Tabelle)
- Siehe auch:
Unter diesem Thema:
Syntax¶
CREATE [ OR REPLACE ] [ { [ LOCAL | GLOBAL ] TEMP[ORARY] | VOLATILE } | TRANSIENT ] TABLE [ IF NOT EXISTS ]
<table_name>
( <col_name> <col_type>
[ COLLATE '<collation_specification>' ]
/* COLLATE is supported only for text data types (VARCHAR and synonyms) */
[ { DEFAULT <expr>
| { AUTOINCREMENT | IDENTITY } [ ( <start_num> , <step_num> ) | START <num> INCREMENT <num> ] } ]
/* AUTOINCREMENT (or IDENTITY) is supported only for numeric data types (NUMBER, INT, FLOAT, etc.) */
[ NOT NULL ]
[ inlineConstraint ]
[ , <col_name> <col_type> [ ... ] ]
[ , outoflineConstraint ]
[ , ... ] )
[ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
[ 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>' ]
Wobei:
inlineConstraint ::= [ CONSTRAINT <constraint_name> ] { UNIQUE | PRIMARY KEY | { [ FOREIGN KEY ] REFERENCES <ref_table_name> [ ( <ref_col_name> ) ] } } [ <constraint_properties> ]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> ]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>' 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 VALIDATE_UTF8 = 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 | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE TRIM_SPACE = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) -- If TYPE = ORC TRIM_SPACE = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) -- If TYPE = PARQUET COMPRESSION = AUTO | LZO | SNAPPY | NONE SNAPPY_COMPRESSION = TRUE | FALSE BINARY_AS_TEXT = TRUE | FALSE TRIM_SPACE = 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 SKIP_BYTE_ORDER_MARK = TRUE | FALSE TRIM_SPACE = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] )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
Syntaxvariante¶
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 ] TABLE <table_name> [ ( <col_name> [ <col_type> ] , <col_name> [ <col_type> ] , ... ) ] [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ] [ COPY GRANTS ] AS SELECT <query> [ ... ]
Bemerkung
In einer CTAS 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 unter COPYGRANTS.
CREATE 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 ] TABLE <table_name> LIKE <source_table> [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ] [ COPY GRANTS ] [ ... ]
Weitere Informationen zu COPY GRANTS finden Sie unter COPYGRANTS.
CREATE TABLE … CLONE
Erstellt eine neue Tabelle mit den gleichen Spaltendefinitionen und allen in der Quelltabelle vorhandenen Daten, aber ohne die Daten tatsächlich zu kopieren. Diese Variante kann auch verwendet werden, um eine Tabelle zu einem bestimmten Zeitpunkt (mithilfe von Time Travel) zu einem bestimmten Zeitpunkt in der Vergangenheit zu klonen:
CREATE [ OR REPLACE ] TABLE <name> CLONE <source_table> [ { AT | BEFORE } { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ] [ COPY GRANTS ] [ ... ]
Bemerkung
Wenn die Anweisung eine vorhandene Tabelle mit demselben Namen ersetzt, werden die Berechtigungen aus der zu ersetzenden Tabelle kopiert. Wenn keine Tabelle mit diesem Namen vorhanden ist, werden die Berechtigungen aus der zu klonenden Quelltabelle kopiert.
Weitere Informationen zu COPY GRANTS finden Sie unter COPYGRANTS.
Weitere Details zum Klonen finden Sie unter CREATE <Objekt> … CLONE.
Erforderliche Parameter¶
Name
Gibt den Bezeichner (d. h. 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.
Spaltenname
Gibt den Spaltenbezeichner (z. B. 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.
Spaltentyp
Gibt den Datentyp für die Spalte an.
Einzelheiten zu den Datentypen, die für Tabellenspalten angegeben werden können, finden Sie unter Datentypen.
Optionale Parameter¶
TEMPORARY ...
oder .TRANSIENT
Gibt an, ob eine Tabelle temporär oder transient ist:
TEMP[ORARY] | LOCAL TEMP[ORARY] | GLOBAL TEMP[ORARY] | VOLATILE
Gibt an, dass die Tabelle temporär ist. Eine temporäre Tabelle bleibt nur für die Dauer der Benutzersitzung bestehen, in der sie angelegt wurde, und ist für andere Benutzer nicht sichtbar. Eine temporäre Tabelle mit allen Inhalten wird am Ende der Sitzung gelöscht.
Die Synonyme und Abkürzungen für
TEMPORARY
sind aus Gründen der Kompatibilität mit anderen Datenbanken vorgesehen (z. B. um Fehler bei der Migration von CREATE TABLE-Anweisungen zu vermeiden). Tabellen, die mit einem dieser Schlüsselwörter erstellt wurden, werden wie Tabellen angezeigt, die mitTEMPORARY
erstellt wurden.TRANSIENT
Gibt an, dass die Tabelle transient ist. Im Gegensatz zu temporären Tabellen existiert eine transiente Tabelle bis zum expliziten Löschen und ist für jeden Benutzer mit den entsprechenden Berechtigungen sichtbar. Transiente Tabellen haben jedoch ein niedrigeres Datenschutzniveau als permanente Tabellen, sodass im Falle eines Systemausfalls Daten in einer transienten Tabelle verloren gehen können. Daher sollten transiente Tabellen nur für Daten verwendet werden, die extern zu Snowflake wiederhergestellt werden können.
Wird kein Wert angegeben, ist die Tabelle permanent.
Standard: Kein Wert (d. h. die Tabelle ist permanent)
Bemerkung
Temporäre Tabellen haben einige zusätzliche Nutzungshinweise in Bezug auf Namenskonflikte, die mit anderen Tabellen auftreten können, die den gleichen Namen im gleichen Schema haben. Darüber hinaus müssen sowohl bei temporären als auch transienten Tabellen einige Hinweise zur Speicherung berücksichtigt werden.
Weitere Informationen zu diesen und anderen Überlegungen bei der Entscheidung, ob temporäre oder transiente Tabellen erstellt werden sollen, finden Sie unter Verwenden von temporären und transienten Tabellen und Speicherkosten für Time Travel und Fail-safe.
'Sortierungsspezifikation'
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 Ausdruck
Der Standardwert für die Spalte wird durch den angegebenen Ausdruck definiert. Eine der folgenden Optionen ist möglich:
Konstantenwert
Einfacher Ausdruck
Sequenzreferenz (
Sequenzname.NEXTVAL
)
Ein einfacher Ausdruck ist ein Ausdruck, der einen Einzelwert zurückgibt. Der Ausdruck darf jedoch keine Referenzen auf Folgendes enthalten:
Unterabfragen
Aggregationen
Fensterfunktionen
Externe Funktionen
Wenn sich ein Standardausdruck auf eine benutzerdefinierte SQL-Funktion (UDF) bezieht, wird die Funktion beim Erstellen der Tabelle durch deren Definition ersetzt. Wenn die benutzerdefinierte Funktion in Zukunft neu definiert wird, hat dies keine Auswirkungen auf den Standardausdruck der Spalte.
Andere Arten von UDFs, wie z. B. JavaScript-UDFs und sichere SQL-UDFs, können in Standardausdrücken für Spalten nicht referenziert werden.
AUTOINCREMENT | IDENTITY [ ( Startwert , Schrittwert ) | START Zahl INCREMENT Zahl ]
Bei Verwendung von AUTOINCREMENT beginnt der Standardwert der Spalte mit einer angegebenen Zahl, und jeder nachfolgende Wert wird automatisch um den angegebenen Betrag erhöht. Diese Parameter können nur bei Spalten mit numerischen Datentypen verwendet werden.
AUTOINCREMENT
undIDENTITY
sind gleichbedeutend. Wenn für eine Spalte eine der beiden Angaben gemacht wird, verwendet Snowflake eine Sequenz, um die Werte für die Spalte zu generieren. Weitere Informationen zu Sequenzen finden Sie unter Verwenden von Sequenzen.Der Standardwert für Start und Schritt/Erhöhung ist
1
.
Standard: Kein Wert (die Spalte hat keinen Standardwert)
Bemerkung
DEFAULT
oderAUTOINCREMENT
schließen sich gegenseitig aus. Für eine Spalte kann nur eine Option angegeben werden.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.
CLUSTER BY ( Ausdruck [ , Ausdruck , ... ] )
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, lesen Sie erst Grundlegendes zu Tabellenstrukturen in Snowflake.
STAGE_FILE_FORMAT = ( FORMAT_NAME = 'Dateiformatname' )
oder .STAGE_FILE_FORMAT = ( TYPE = CSV | JSON | AVRO | ORC | PARQUET | XML [ ... ] )
Ändert das Dateiformat für die Tabelle (zum Laden und Entladen von Daten). Dafür gibt es zwei Optionen:
FORMAT_NAME = Dateiformatname
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
undTYPE
schließen sich gegenseitig aus. Um unbeabsichtigtes Verhalten zu vermeiden, sollten Sie beim Erstellen einer Tabelle nur eins 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 = Ganzzahl
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
oder1
Enterprise Edition:
0
bis90
für permanente Tabellen0
oder1
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 = Ganzzahl
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 = 'Sortierungsspezifikation'
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 TABLE-Anweisung enthalten ist, übernimmt die neue Tabelle keine expliziten Zugriffsrechte für die ursprüngliche Tabelle, übernimmt aber alle zukünftigen Berechtigungen, die für den Objekttyp im Schema definiert werden.
Hinweis:
Wenn die CREATE TABLE-Anweisung auf mehr als eine Tabelle verweist (z. B.
create or replace table TABLE1 clone TABLE2;
), kopiert dieCOPY GRANTS
-Klausel die Berechtigungen von der zu ersetzenden Tabelle (z. B.TABLE1
in diesem Beispiel).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 Ersatztabelle listet den Berechtigten für die kopierten Berechtigungen als Rolle auf, die die CREATE TABLE-Anweisung ausgeführt hat, mit dem aktuellen Zeitstempel, als die Anweisung ausgeführt wurde.
Die Operation zum Kopieren von Berechtigungen erfolgt atomar im Befehl CREATE TABLE (d. h. innerhalb derselben Transaktion).
COMMENT = 'Zeichenfolgenliteral'
Gibt einen Kommentar für die Tabelle an.
Standard: Kein Wert
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 und Entladen 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
RECORD_DELIMITER = 'Zeichen' | NONE
- Verwendung
Laden und Entladen von Daten
- 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 Escape-Sequenzen, Oktalwerte (mit
\\
vorangestellt) oder Hex-Werte (mit0x
vorangestellt). Geben Sie beispielsweise für Datensätze, die durch das Thornzeichen (Þ
) getrennt sind, den Oktalwert (\\336
) oder den Hexadezimalwert (0xDE
) an. Akzeptiert auch den WertNONE
.Das angegebene Trennzeichen muss ein gültiges UTF-8-Zeichen sein und darf keine zufällige Folge von Bytes sein.
Trennzeichen mit mehreren Zeichen werden ebenfalls unterstützt. 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 Trennzeichen darf maximal 20 Zeichen lang sein. Geben Sie keine Zeichen an, die für andere Dateiformatoptionen wieESCAPE
oderESCAPE_UNENCLOSED_FIELD
verwendet werden.- 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 = 'Zeichen' | NONE
- Verwendung
Laden und Entladen von Daten
- 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 Escape-Sequenzen, Oktalwerte (mit
\\
vorangestellt) oder Hex-Werte (mit0x
vorangestellt). Geben Sie beispielsweise für Felder, die durch das Thornzeichen (Þ
) getrennt sind, den Oktalwert (\\336
) oder den Hexadezimalwert (0xDE
) an. Akzeptiert auch den WertNONE
.Das angegebene Trennzeichen muss ein gültiges UTF-8-Zeichen sein und darf keine zufällige Folge von Bytes sein.
Trennzeichen mit mehreren Zeichen werden ebenfalls unterstützt. 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 Trennzeichen darf maximal 20 Zeichen lang sein. Geben Sie keine Zeichen an, die für andere Dateiformatoptionen wieESCAPE
oderESCAPE_UNENCLOSED_FIELD
verwendet werden.- Standard
Komma (
,
)
FILE_EXTENSION = 'Zeichenfolge' | 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 Service gelesen werden kann.
- Standard
Null, d. h. die Dateierweiterung wird durch den Formattyp bestimmt, z. B.
.csv[Komprimierung]
, wobeiKomprimierung
die durch die Komprimierungsmethode hinzugefügte Erweiterung ist, wennCOMPRESSION
festgelegt ist.
Bemerkung
Wenn die
SINGLE
-Kopieroption den WertTRUE
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 Pfadinterner_Speicherplatz
oderexterner_Speicherplatz
an (z. B.copy into @stage/data.csv
).SKIP_HEADER = Ganzzahl
- Verwendung
Nur Laden von Daten
- 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
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 = 'Zeichenfolge' | 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 (Datenladen) oder DATE_OUTPUT_FORMAT (Datenentladen) verwendet.- Standard
AUTO
TIME_FORMAT = 'Zeichenfolge' | 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 (Datenladen) oder TIME_OUTPUT_FORMAT (Datenentladen) verwendet.- Standard
AUTO
TIMESTAMP_FORMAT = Zeichenfolge' | 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 ist oder
AUTO
ist, wird der Wert für den Parameter TIMESTAMP_INPUT_FORMAT (Datenladen) oder TIMESTAMP_OUTPUT_FORMAT (Datenentladen) 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 = 'Zeichen' | NONE
- Verwendung
Laden und Entladen von Daten
- Definition
Zeichenfolge mit einem einzelnen Zeichen, das als Escapezeichen für Feldwerte verwendet wird. Ein Escapezeichen ruft eine alternative Interpretation für nachfolgende Zeichen in einer Zeichenfolge auf. Sie können das ESCAPE-Zeichen verwenden, um Instanzen von
FIELD_DELIMITER
-,RECORD_DELIMITER
- oderFIELD_OPTIONALLY_ENCLOSED_BY
-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.
Gibt beim Laden von Daten 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.Wenn diese Option beim Entladen von Daten gesetzt ist, überschreibt sie den Escape-Zeichensatz für
ESCAPE_UNENCLOSED_FIELD
.
- Standard
NONE
ESCAPE_UNENCLOSED_FIELD = 'Zeichen' | NONE
- Verwendung
Laden und Entladen von Daten
- Definition
Zeichenfolge mit einem einzelnen Zeichen, das als Escapezeichen nur für nicht eingeschlossene Feldwerte verwendet wird. Ein Escapezeichen ruft eine alternative Interpretation für nachfolgende Zeichen in einer Zeichenfolge auf. Sie können das ESCAPE-Zeichen verwenden, um Instanzen von
FIELD_DELIMITER
- oderRECORD_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.
Hinweis: Wenn
ESCAPE
beim Entladen von Daten gesetzt ist, wird diese Option vom Escapezeichensatz der Dateiformatoption überschrieben.- Standard
Backslash (
\\
)
TRIM_SPACE = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- 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 beiFIELD_DELIMITER = '|'
undFIELD_OPTIONALLY_ENCLOSED_BY = '"'
:|"Hello world"| /* loads as */ >Hello world< |" Hello world "| /* loads as */ > Hello world < | "Hello world" | /* loads as */ >Hello world<
(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 = 'Zeichen' | NONE
- Verwendung
Laden und Entladen von Daten
- 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 = ( 'Zeichenfolge1' [ , 'Zeichenfolge2' , ... ] )
- Verwendung
Laden und Entladen von Daten
- Definition
Zeichenfolge, die zum Konvertieren in und von SQL NULL verwendet wird:
Beim Laden von Daten ersetzt Snowflake 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.
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 derESCAPE_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
VALIDATE_UTF8 = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- Definition
Boolescher Wert, der angibt, ob die UTF-8-Zeichencodierung in Zeichenfolgenspaltendaten überprüft werden soll.
Wenn auf
TRUE
gesetzt, validiert Snowflake die UTF-8-Zeichencodierung in Zeichenfolgenspaltendaten. Wenn eine ungültige UTF-8-Zeichencodierung erkannt wird, führt der COPY-Befehl zu einem Fehler.- Standard
TRUE
Wichtig
Diese Option wird nur bereitgestellt, um Abwärtskompatibilität mit früheren Versionen von Snowflake sicherzustellen. Sie sollten diese Option nicht deaktivieren, es sei denn, Sie werden vom Snowflake-Support angewiesen.
EMPTY_FIELD_AS_NULL = TRUE | FALSE
- Verwendung
Laden und Entladen von Daten
- 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. WennFIELD_OPTIONALLY_ENCLOSED_BY = NONE
festgelegt ist, werden beiEMPTY_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, mussFIELD_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 = 'Zeichenfolge'
- Verwendung
Nur Laden von Daten
- Definition
Zeichenfolge (Konstante), die den Zeichensatz der Quelldaten beim Laden von Daten in eine Tabelle angibt.
Zeichensatz
ENCODING
-WertUnterstü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
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
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-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. Wenn die Dateiformatoption
VALIDATE_UTF8
den WertTRUE
hat, validiert Snowflake die UTF-8-Zeichencodierung in den Zeichenfolgenspaltendaten, nachdem sie von ihrer ursprünglichen Zeichencodierung konvertiert wurde.
TYPE = JSON¶
COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- Verwendung
Laden und Entladen 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
DATE_FORMAT = 'Zeichenfolge' | AUTO
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn JSON-Daten in separate Spalten geladen werden (d. h. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Definiert das Format der Datumszeichenfolgewerte in den Datendateien. Wenn ein Wert nicht angegeben oder
AUTO
ist, wird der Wert des Parameters DATE_INPUT_FORMAT verwendet.Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
AUTO
TIME_FORMAT = 'Zeichenfolge' | AUTO
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn JSON-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Definiert das Format der Uhrzeit-Zeichenfolgewerte in den Datendateien. Wenn ein Wert nicht angegeben oder
AUTO
ist, wird der Wert des Parameters TIME_INPUT_FORMAT verwendet.Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
AUTO
TIMESTAMP_FORMAT = Zeichenfolge' | AUTO
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn JSON-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Definiert das Format der Zeitstempel-Zeichenfolgewerte in den Datendateien. Wenn ein Wert nicht angegeben oder
AUTO
ist, wird der Wert des Parameters TIMESTAMP_INPUT_FORMAT verwendet.Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
AUTO
BINARY_FORMAT = HEX | BASE64 | UTF8
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn JSON-Daten in separate Spalten geladen werden (d. h. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Definiert das Codierungsformat für Binärzeichenfolgewerte in den Datendateien. Die Option kann beim Laden von Daten in binäre Spalten einer Tabelle verwendet werden.
Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
HEX
TRIM_SPACE = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn JSON-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Boolescher Wert, der angibt, ob führende 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 ist derzeit eine Vorschaufunktion.
- Standard
FALSE
NULL_IF = ( 'Zeichenfolge1' [ , 'Zeichenfolge2' , ... ] )
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn JSON-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Zeichenfolge, die zum Konvertieren in/aus 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.
Beispiel:
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.
Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
\\N
(d. h. NULL mit der Annahme, dass derESCAPE_UNENCLOSED_FIELD
-Wert\\
ist)
FILE_EXTENSION = 'Zeichenfolge' | 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 Service gelesen werden kann.
- Standard
Null, d. h. die Dateierweiterung wird durch den Formattyp bestimmt, z. B.
.json[Komprimierung]
, wobeiKomprimierung
die durch die Komprimierungsmethode hinzugefügte Erweiterung ist, wennCOMPRESSION
festgelegt 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
Nur Laden von Daten
- Definition
Boolescher Wert, der angibt, dass doppelte Objektfeldnamen erlaubt sind (nur der letzte wird beibehalten).
- Standard
FALSE
STRIP_OUTER_ARRAY = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- Definition
Boolescher Wert, der den JSON-Parser anweist, die äußeren Klammern zu entfernen (d. h.
[ ]
).- Standard
FALSE
STRIP_NULL_VALUES = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- Definition
Boolescher Wert, der den JSON-Parser anweist, Objektfelder oder Array-Elemente mit
null
-Werten zu entfernen. Zum Beispiel, wenn aufTRUE
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
Nur Laden von Daten
- Definition
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.
Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- 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
Nur Laden von Daten
- Definition
Boolescher Wert, der angibt, ob UTF-8-Codierungsfehler Fehlerbedingungen erzeugen. Wenn auf
TRUE
gesetzt, werden alle ungültigen UTF-8-Sequenzen stillschweigend durch das UnicodezeichenU+FFFD
(d. h. „Ersetzungszeichen“) ersetzt.Bemerkung
Diese Kopieroption entfernt beim Laden der Daten alle Nicht-UTF-8-Zeichen, aber es gibt keine Garantie für eine 1:1-Ersetzung von Zeichen. Wir empfehlen, stattdessen die Kopieroption REPLACE_INVALID_CHARACTERS zu verwenden.
- 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 | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- Verwendung
Laden und Entladen 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
TRIM_SPACE = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn Avro-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Boolescher Wert, der angibt, ob führende 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 ist derzeit eine Vorschaufunktion.
- Standard
FALSE
NULL_IF = ( 'Zeichenfolge1' [ , 'Zeichenfolge2' , ... ] )
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn Avro-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Zeichenfolge, die zum Konvertieren in/aus 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.
Beispiel:
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.
Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
\\N
(d. h. NULL mit der Annahme, dass derESCAPE_UNENCLOSED_FIELD
-Wert\\
ist)
TYPE = ORC¶
TRIM_SPACE = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn ORC-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Boolescher Wert, der angibt, ob führende 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 ist derzeit eine Vorschaufunktion.
- Standard
FALSE
NULL_IF = ( 'Zeichenfolge1' [ , 'Zeichenfolge2' , ... ] )
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn ORC-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Zeichenfolge, die zum Konvertieren in/aus 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.
Beispiel:
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.
Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
\\N
(d. h. NULL mit der Annahme, dass derESCAPE_UNENCLOSED_FIELD
-Wert\\
ist)
TYPE = PARQUET¶
COMPRESSION = AUTO | LZO | SNAPPY | NONE
- Verwendung
Laden und Entladen von Daten
- 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 oder 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
AUTO
| Entladene Dateien werden standardmäßig mit dem Snappy-Komprimierungsalgorithmus 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
Nur Laden von Daten
- 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.- Einschränkungen
Wird nur für Datenladeoperationen unterstützt.
- Standard
TRUE
TRIM_SPACE = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn Parquet-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Boolescher Wert, der angibt, ob führende 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 ist derzeit eine Vorschaufunktion.
- Standard
FALSE
NULL_IF = ( 'Zeichenfolge1' [ , 'Zeichenfolge2' , ... ] )
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn Parquet-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Zeichenfolge, die zum Konvertieren in/aus 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.
Beispiel:
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.
Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
\\N
(d. h. NULL mit der Annahme, dass derESCAPE_UNENCLOSED_FIELD
-Wert\\
ist)
TYPE = XML¶
COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- Verwendung
Laden und Entladen 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
Nur Laden von Daten
- Definition
Boolescher Wert, der angibt, ob UTF-8-Codierungsfehler Fehlerbedingungen erzeugen. Wenn auf
TRUE
gesetzt, werden alle ungültigen UTF-8-Sequenzen stillschweigend durch das UnicodezeichenU+FFFD
(d. h. „Ersetzungszeichen“) ersetzt.- 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
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
TRIM_SPACE = TRUE | FALSE
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn XML-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Boolescher Wert, der angibt, ob führende 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 ist derzeit eine Vorschaufunktion.
- Standard
FALSE
NULL_IF = ( 'Zeichenfolge1' [ , 'Zeichenfolge2' , ... ] )
- Verwendung
Nur Laden von Daten
- Definition
Wird nur angewendet, wenn XML-Daten in separate Spalten geladen werden (z. B. mithilfe der Kopieroption MATCH_BY_COLUMN_NAME oder einer COPY-Transformation). Zeichenfolge, die zum Konvertieren in/aus 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.
Beispiel:
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Beachten Sie, dass diese Option leere Zeichenfolgen enthalten kann.
Diese Dateiformatoption ist derzeit eine Vorschaufunktion.
- Standard
\\N
(d. h. NULL mit der Annahme, dass derESCAPE_UNENCLOSED_FIELD
-Wert\\
ist)
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_Zahl | SKIP_FILE_Zahl% | ABORT_STATEMENT
- Verwendung
Nur Laden von Daten
- Definition
Zeichenfolge (Konstante), die die Aktion angibt, die ausgeführt werden soll, wenn beim Laden von Daten aus einer Datei ein Fehler auftritt:
- Werte
Unterstützte Werte
Anmerkungen
CONTINUE
Fährt mit dem Laden der Datei fort. Die COPY-Anweisung gibt eine Fehlermeldung für maximal einen 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
Überspringt die Datei, wenn in der Datei Fehler aufgetreten sind.
SKIP_FILE_Zahl
(z. B.SKIP_FILE_10
)Überspringt die Datei, wenn die Anzahl der Fehler in der Datei gleich oder größer als die angegebene Anzahl ist.
SKIP_FILE_Zahl%
(z. B.SKIP_FILE_10%
)Überspringt die Datei, wenn der Prozentsatz der Fehler in der Datei den angegebenen Prozentsatz überschreitet.
ABORT_STATEMENT
Bricht die Ladeoperation ab, wenn in einer Datendatei ein Fehler auftritt. 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).
Bemerkung
Derzeit gelten folgende Einschränkungen:
Beim Laden strukturierter, Trennzeichen verwendender Datendateien (CSV, TSV usw.) funktionieren alle ON_ERROR-Werte sowohl bei Parsing- als auch Transformationsfehlern wie erwartet.
Dateien mit semistrukturierten Daten (JSON, Avro, ORC, Parquet oder XML) unterstützen derzeit aufgrund des Designs dieser Formate nicht immer dieselbe Verhaltenssemantik wie strukturierte Datendateien. Dies gilt für die folgenden ON_ERROR-Werte:
CONTINUE
,SKIP_FILE_Zahl
oderSKIP_FILE_Zahl%
.Nur Parquet- und ORC-Daten. Wenn ON_ERROR auf
CONTINUE
,SKIP_FILE_Zahl
oderSKIP_FILE_Zahl%
gesetzt ist, führt jeder Parsing-Fehler dazu, dass die Datendatei übersprungen wird. Alle Konvertierungs- oder Transformationsfehler verwenden das Standardverhalten von COPY (ABORT_STATEMENT
) oder Snowpipe (SKIP_FILE
) unabhängig vom gewählten Optionswert.Nur JSON-, XML- und Avro-Daten. Wenn ON_ERROR auf
CONTINUE
,SKIP_FILE_Zahl
oderSKIP_FILE_Zahl%
gesetzt ist, werden die Datensätze bis zur Stelle des Parsing-Fehlers geladen, während der Rest der Datendatei übersprungen wird. Alle Konvertierungs- oder Transformationsfehler verwenden das Standardverhalten von COPY (ABORT_STATEMENT
) oder Snowpipe (SKIP_FILE
) unabhängig vom gewählten Optionswert.
- Standard
- Massenladen mit COPY
ABORT_STATEMENT
- Snowpipe
SKIP_FILE
SIZE_LIMIT = Zahl
- 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 desSIZE_LIMIT
-Schwellenwerts abbrechen.Beachten Sie, dass mindestens eine Datei unabhängig von dem für
SIZE_LIMIT:code:
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
oderCASE_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.Derzeit unterstützt diese Kopieroption nur CSV-Daten.
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.Derzeit unterstützt diese Kopieroption nur CSV-Daten.
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
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 existiert, wird ein Fehler zurückgegeben und die Tabelle nicht angelegt.
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.
Wichtig
Die Verwendung von
OR REPLACE
ist gleichbedeutend mit der Verwendung von DROP TABLE auf der bestehenden Tabelle und der anschließenden Erstellung einer neuen Tabelle mit dem gleichen Namen. Die gelöschte Tabelle wird jedoch nicht dauerhaft aus dem System entfernt. Stattdessen wird sie in Time Travel aufbewahrt. Dies muss beachtet werden, da gelöschte Tabellen in Time Travel wiederhergestellt werden können und auch Datenspeicher Ihres Kontos verbrauchen. Weitere Informationen dazu finden Sie unter Speicherkosten für Time Travel und Fail-safe.Ähnlich wie bei reservierten Schlüsselwörtern können ANSI-reservierte Funktionsnamen (z. B. CURRENT_DATE, CURRENT_TIMESTAMP) nicht als Spaltennamen verwendet werden.
CREATE TABLE … AS SELECT (CTAS):
Wenn die Aliasse für die Spaltennamen in der SELECT-Liste gültige Spalten sind, dann sind die Spaltendefinitionen in der CTAS-Anweisung nicht erforderlich. Wenn sie weggelassen werden, werden die Spaltennamen und -typen aus der zugrunde liegenden Abfrage abgeleitet:
CREATE TABLE <table_name> AS SELECT ...
Alternativ können die Namen auch explizit mit der folgenden Syntax angegeben werden:
CREATE TABLE <table_name> ( <col1_name> , <col2_name> , ... ) AS SELECT ...
Die Anzahl der angegebenen Spaltennamen muss mit der Anzahl der SELECT-Listenelemente in der Abfrage übereinstimmen; die Typen der Spalten werden aus den von der Abfrage erzeugten Typen abgeleitet.
Gruppierungsschlüssel können in einer CTAS-Anweisung verwendet werden. Wenn jedoch Gruppierungsschlüssel angegeben werden, sind Spaltendefinitionen erforderlich und müssen in der Anweisung explizit angegeben werden.
Innerhalb einer Transaktion schreibt jede DDL -Anweisung (einschließlich CREATE TEMPORARY/TRANSIENT TABLE) die Transaktion fest, bevor die DDL-Anweisung selbst ausgeführt wird. Die DDL-Anweisung wird dann in einer eigenen Transaktion ausgeführt. Mit der nächsten Anweisung nach der DDL-Anweisung wird eine neue Transaktion gestartet. Daher können Sie keine temporäre oder vorübergehende Tabelle innerhalb einer einzelnen Transaktion erstellen, verwenden und löschen. Wenn Sie eine temporäre oder vorübergehende Tabelle in einer Transaktion verwenden möchten, erstellen Sie die Tabelle vor der Transaktion und löschen Sie die Tabelle nach der Transaktion.
Beispiele¶
Erstellen Sie eine einfache Tabelle in der aktuellen Datenbank und fügen Sie eine Zeile in die Tabelle ein:
CREATE TABLE mytable (amount NUMBER); +-------------------------------------+ | status | |-------------------------------------| | Table MYTABLE successfully created. | +-------------------------------------+ INSERT INTO mytable VALUES(1); SHOW TABLES like 'mytable'; +---------------------------------+---------+---------------+-------------+-------+---------+------------+------+-------+--------------+----------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | |---------------------------------+---------+---------------+-------------+-------+---------+------------+------+-------+--------------+----------------| | Mon, 11 Sep 2017 16:32:28 -0700 | MYTABLE | TESTDB | PUBLIC | TABLE | | | 1 | 1024 | ACCOUNTADMIN | 1 | +---------------------------------+---------+---------------+-------------+-------+---------+------------+------+-------+--------------+----------------+ DESC TABLE mytable; +--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+ | name | type | kind | null? | default | primary key | unique key | check | expression | comment | |--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------| | AMOUNT | NUMBER(38,0) | COLUMN | Y | NULL | N | N | NULL | NULL | NULL | +--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+
Erstellen Sie eine einfache Tabelle und geben Sie Kommentare sowohl für die Tabelle als auch für die Spalte in der Tabelle an:
CREATE TABLE example (col1 number comment 'a column comment') COMMENT='a table comment'; +-------------------------------------+ | status | |-------------------------------------| | Table EXAMPLE successfully created. | +-------------------------------------+ SHOW TABLES like 'example'; +---------------------------------+---------+---------------+-------------+-------+-----------------+------------+------+-------+--------------+----------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | |---------------------------------+---------+---------------+-------------+-------+-----------------+------------+------+-------+--------------+----------------| | Mon, 11 Sep 2017 16:35:59 -0700 | EXAMPLE | TESTDB | PUBLIC | TABLE | a table comment | | 0 | 0 | ACCOUNTADMIN | 1 | +---------------------------------+---------+---------------+-------------+-------+-----------------+------------+------+-------+--------------+----------------+ DESC TABLE example; +------+--------------+--------+-------+---------+-------------+------------+-------+------------+------------------+ | name | type | kind | null? | default | primary key | unique key | check | expression | comment | |------+--------------+--------+-------+---------+-------------+------------+-------+------------+------------------| | COL1 | NUMBER(38,0) | COLUMN | Y | NULL | N | N | NULL | NULL | a column comment | +------+--------------+--------+-------+---------+-------------+------------+-------+------------+------------------+
Erstellen Sie eine Tabelle, indem Sie eine bestehende Tabelle auswählen:
CREATE TABLE mytable_copy (b) AS SELECT * from mytable; DESC TABLE mytable_copy; +------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+ | name | type | kind | null? | default | primary key | unique key | check | expression | comment | |------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------| | B | NUMBER(38,0) | COLUMN | Y | NULL | N | N | NULL | NULL | NULL | +------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+ CREATE TABLE mytable_copy2 AS SELECT b+1 AS c FROM mytable_copy; DESC TABLE mytable_copy2; +------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+ | name | type | kind | null? | default | primary key | unique key | check | expression | comment | |------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------| | C | NUMBER(39,0) | COLUMN | Y | NULL | N | N | NULL | NULL | NULL | +------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+ SELECT * FROM mytable_copy2; +---+ | C | |---| | 2 | +---+
Weiterführendes Beispiel für die Erstellung einer Tabelle durch Auswahl aus einer bestehenden Tabelle; in diesem Beispiel werden die Werte in der Spalte summary_amount
der neuen Tabelle aus zwei Spalten der Quelltabelle abgeleitet:
CREATE TABLE testtable-summary (name, summary_amount) AS SELECT name, amount1 + amount2 FROM testtable;
Erstellen Sie eine Tabelle, indem Sie Spalten aus einer bereitgestellten Parquet-Datendatei auswählen:
CREATE OR REPLACE TABLE parquet_col ( custKey number default NULL, orderDate date default NULL, orderStatus varchar(100) default NULL, price varchar(255) ) AS SELECT $1:o_custkey::number, $1:o_orderdate::date, $1:o_orderstatus::text, $1:o_totalprice::text FROM @my_stage; +-----------------------------------------+ | status | |-----------------------------------------| | Table PARQUET_COL successfully created. | +-----------------------------------------+ DESC TABLE parquet_col; +-------------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+ | name | type | kind | null? | default | primary key | unique key | check | expression | comment | |-------------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------| | CUSTKEY | NUMBER(38,0) | COLUMN | Y | NULL | N | N | NULL | NULL | NULL | | ORDERDATE | DATE | COLUMN | Y | NULL | N | N | NULL | NULL | NULL | | ORDERSTATUS | VARCHAR(100) | COLUMN | Y | NULL | N | N | NULL | NULL | NULL | | PRICE | VARCHAR(255) | COLUMN | Y | NULL | N | N | NULL | NULL | NULL | +-------------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+
Erstellen Sie eine Tabelle mit den gleichen Spaltendefinitionen wie eine andere Tabelle, aber ohne Zeilen:
CREATE TABLE mytable (amount NUMBER); INSERT INTO mytable VALUES(1); SELECT * FROM mytable; +--------+ | AMOUNT | |--------| | 1 | +--------+ CREATE TABLE mytable_2 LIKE mytable; DESC TABLE mytable_2; +--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+ | name | type | kind | null? | default | primary key | unique key | check | expression | comment | |--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------| | AMOUNT | NUMBER(38,0) | COLUMN | Y | NULL | N | N | NULL | NULL | NULL | +--------+--------------+--------+-------+---------+-------------+------------+-------+------------+---------+ SELECT * FROM mytable_2; +--------+ | AMOUNT | |--------| +--------+
Erstellen Sie eine Tabelle mit einem mehrspaltigen Gruppierungsschlüssel:
CREATE TABLE mytable (date timestamp_ntz, id number, content variant) CLUSTER BY (date, id); SHOW TABLES LIKE 'mytable'; +---------------------------------+---------+---------------+-------------+-------+---------+------------------+------+-------+--------------+----------------+ | created_on | name | database_name | schema_name | kind | comment | cluster_by | rows | bytes | owner | retention_time | |---------------------------------+---------+---------------+-------------+-------+---------+------------------+------+-------+--------------+----------------| | Mon, 11 Sep 2017 16:20:41 -0700 | MYTABLE | TESTDB | PUBLIC | TABLE | | LINEAR(DATE, ID) | 0 | 0 | ACCOUNTADMIN | 1 | +---------------------------------+---------+---------------+-------------+-------+---------+------------------+------+-------+--------------+----------------+
Geben Sie die Sortierung für Spalten in einer Tabelle an:
CREATE TABLE collation_demo ( uncollated_phrase VARCHAR, utf8_phrase VARCHAR COLLATE 'utf8', english_phrase VARCHAR COLLATE 'en', spanish_phrase VARCHAR COLLATE 'sp' ); INSERT INTO collation_demo (uncollated_phrase, utf8_phrase, english_phrase, spanish_phrase) VALUES ('pinata', 'pinata', 'pinata', 'piñata');