Catégories :

Table, vue et séquence DDL

CREATE TABLE

Crée une nouvelle table dans le schéma actuel/spécifié ou remplace une table existante. Une table peut avoir plusieurs colonnes, chaque définition de colonne étant constituée d’un nom, d’un type de données et, éventuellement si la colonne :

  • Nécessite une valeur (NOT NULL).

  • A une valeur par défaut.

  • Possède des contraintes d’intégrité référentielle (clé primaire, clé étrangère, etc.).

En outre, cette commande prend en charge les variantes suivantes :

  • CREATE TABLE … AS SELECT (crée une table remplie ; aussi appelée CTAS)

  • CREATE TABLE … LIKE (crée une copie vide d’une table existante)

  • CREATE TABLE … CLONE (crée un clone d’une table existante)

Voir aussi :

ALTER TABLE , DROP TABLE , SHOW TABLES

Dans ce chapitre :

Syntaxe

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 = <num> ]
  [ CHANGE_TRACKING = { TRUE | FALSE } ]
  [ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
  [ COPY GRANTS ]
  [ COMMENT = '<string_literal>' ]

Où :

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

Pour plus de détails sur les contraintes en ligne, voir 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> ]

Pour plus de détails sur les contraintes hors ligne, voir 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
     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

Syntaxe des variantes

CREATE TABLE … AS SELECT (également appelé CTAS)

Crée une nouvelle table remplie avec les données renvoyées par une requête :

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

Note

Dans un CTAS, la clause COPY GRANTS n’est valide que lorsqu’elle est combinée avec la clause OR REPLACE. COPY GRANTS copie les autorisations de la table remplacée par CREATE OR REPLACE (si elle existe déjà), et non des tables sources interrogées dans l’instruction SELECT. CTAS avec COPY GRANTS vous permet d’écraser une table avec un nouvel ensemble de données tout en conservant les autorisations existantes sur cette table.

Pour plus d’informations sur COPY GRANTS, voir COPY GRANTS dans ce document.

CREATE TABLE … LIKE

Crée une nouvelle table avec les mêmes définitions de colonnes qu’une table existante, mais sans copier les données de la table existante. Les noms de colonnes, les types, les valeurs par défaut et les contraintes sont copiés dans la nouvelle table :

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

Pour plus d’informations sur COPY GRANTS, voir COPY GRANTS dans ce document.

CREATE TABLE … CLONE

Crée une nouvelle table avec les mêmes définitions de colonnes et contenant toutes les données existantes de la table source, sans réellement copier les données. Cette variante peut également être utilisée pour cloner une table à un moment précis dans le passé (à l’aide de la commande Time Travel) :

CREATE [ OR REPLACE ] TABLE <name> CLONE <source_table>
  [ { AT | BEFORE } { TIMESTAMP => <timestamp> | OFFSET => <time_difference> | STATEMENT => <id> } ]
  [ COPY GRANTS ]
  [ ... ]

Note

Si l’instruction remplace une table existante du même nom, les autorisations sont copiées à partir de la table à remplacer. S’il n’existe aucune table de ce nom, les autorisations sont copiées à partir de la table source en cours de clonage.

Pour plus d’informations sur COPY GRANTS, voir COPY GRANTS dans ce document.

Pour plus de détails sur le clonage, voir CREATE <objet> … CLONE.

Paramètres requis

nom

Indique l’identificateur (c’est-à-dire le nom) de la table ; doit être unique pour le schéma dans lequel la table est créée.

De plus, l’identificateur doit commencer par un caractère alphabétique et ne peut pas contenir d’espaces ou de caractères spéciaux à moins que toute la chaîne d’identificateur soit délimitée par des guillemets doubles (p. ex. "My object"). Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Pour plus de détails, voir Exigences relatives à l’identificateur.

nom_colonne

Indique l’identificateur de colonne (c’est-à-dire le nom). Toutes les exigences relatives aux identificateurs de table s’appliquent également aux identificateurs de colonne.

Pour plus de détails, voir Exigences relatives à l’identificateur et Mots clés réservés et limités.

Note

En plus des mots clés réservés standard, les mots clés suivants ne peuvent pas être utilisés comme identificateurs de colonnes, car ils sont réservés aux fonctions de contexte standard ANSI :

  • CURRENT_DATE

  • CURRENT_ROLE

  • CURRENT_TIME

  • CURRENT_TIMESTAMP

  • CURRENT_USER

Pour la liste des mots clés réservés, voir Mots clés réservés et limités.

type_col

Spécifie le type de données pour la colonne.

Pour plus de détails sur les types de données qui peuvent être spécifiés pour les colonnes de la table, voir Types de données.

Paramètres facultatifs

TEMPORARY ... ou . TRANSIENT

Indique si une table est temporaire ou transitoire :

TEMP[ORARY] | LOCAL TEMP[ORARY] | GLOBAL TEMP[ORARY] | VOLATILE

Indique que la table est temporaire. Une table temporaire ne persiste que pour la durée de la session utilisateur dans laquelle elle a été créée et n’est pas visible pour les autres utilisateurs. Une table temporaire et tout son contenu sont détruits à la fin de la session.

Les synonymes et abréviations de TEMPORARY sont fournis pour assurer la compatibilité avec d’autres bases de données (par exemple, pour éviter les erreurs lors de la migration des instructions CREATE TABLE). Les tables créées avec l’un de ces mots clés apparaissent et se comportent de la même manière que les tables créées à l’aide de la commande TEMPORARY.

TRANSIENT

Indique que la table est transitoire. Contrairement aux tables temporaires, une table transitoire existe jusqu’à ce qu’elle soit explicitement détruite et est visible pour tout utilisateur disposant des privilèges appropriés. Toutefois, les tables transitoires ont un niveau de protection des données inférieur à celui des tables permanentes, ce qui signifie que les données d’une table transitoire peuvent être perdues en cas de défaillance du système. Par conséquent, les tables transitoires ne devraient être utilisées que pour les données qui peuvent être recréées à l’extérieur de Snowflake.

Si aucune valeur n’est spécifiée, la table est permanente.

Par défaut : aucune valeur (la table est permanente)

Note

Les tables temporaires présentent quelques considérations d’utilisation supplémentaires en ce qui concerne les conflits de nom qui peuvent survenir avec d’autres tables ayant le même nom dans le même schéma. De plus, les tables temporaires et transitoires ont toutes deux des conditions de stockage.

Pour plus d’informations sur ces considérations et d’autres considérations lors de la décision de créer des tables temporaires ou transitoires, voir Utilisation de tables temporaires et transitoires et Coûts de stockage pour Time Travel et Fail-safe.

'spécification_classement'

Spécifie le classement à utiliser pour des opérations de colonne telles que la comparaison de chaînes. Cette option s’applique uniquement aux colonnes de texte (VARCHAR, STRING, TEXT, etc.). Pour plus de détails, voir Spécifications de classement.

DEFAULT ... ou . AUTOINCREMENT ...

Indique si une valeur par défaut est automatiquement insérée dans la colonne lorsqu’une valeur n’est pas spécifiée explicitement via une instruction INSERT ou CREATE TABLE AS SELECT :

DEFAULT expr

La valeur par défaut de la colonne est définie par l’expression spécifiée, qui peut être l’une des suivantes :

  • Valeur constante.

  • Expression simple

  • Référence de séquence (nom_seq.NEXTVAL).

Une expression simple est une expression qui affiche une valeur scalaire ; cependant, l’expression ne peut pas contenir de références aux éléments suivants :

  • Sous-requêtes.

  • Agrégats.

  • Fonctions de fenêtrage.

  • Fonctions externes.

Si une expression par défaut fait référence à une fonction définie par l’utilisateur SQL (UDF), la fonction est remplacée par sa définition au moment de la création de la table. Si la fonction définie par l’utilisateur est redéfinie à l’avenir, cela n’aura pas d’impact sur l’expression par défaut de la colonne.

D’autres types d” UDFs, tels que les UDFs JavaScript et les UDFs SQL sécurisés, ne peuvent pas être référencés dans les expressions par défaut des colonnes.

AUTOINCREMENT | IDENTITY [ ( num_début , num_zone_préparation ) | START num INCREMENT num ]

Quand AUTOINCREMENT est utilisé, la valeur par défaut de la colonne commence par un nombre spécifié et chaque valeur successive augmente automatiquement de la somme spécifiée. Ces paramètres ne peuvent être utilisés qu’avec des colonnes avec des types de données numériques.

AUTOINCREMENT et IDENTITY sont synonymes. Si l’une ou l’autre est spécifiée pour une colonne, Snowflake utilise une séquence pour générer les valeurs de la colonne. Pour plus d’informations sur les séquences, voir Utilisation de séquences.

La valeur par défaut pour le démarrage et les paliers/incréments est de 1.

Par défaut : aucune valeur (la colonne n’a pas de valeur par défaut)

Note

DEFAULT et AUTOINCREMENT s’excluent mutuellement ; une seule des deux peut être spécifiée pour une colonne.

CONSTRAINT ...

Définit une contrainte en ligne ou hors ligne pour la ou les colonnes spécifiées dans la table.

Pour plus d’informations sur la syntaxe, voir CREATE | ALTER TABLE … CONSTRAINT. Pour plus d’informations sur les contraintes, voir Contraintes.

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

Spécifie une ou plusieurs colonnes ou expressions de colonne dans la table comme clés de clustering. Pour plus de détails, voir Clés de clustering et tables en cluster.

Par défaut : aucune valeur (aucune clé de clustering n’est définie pour la table)

Important

Les clés de clustering ne sont pas recommandées ni conçues pour toutes les tables. Elles sont généralement intéressantes pour les tables très importantes (de plusieurs téraoctets).

Avant de spécifier une clé de clustering pour une table, consultez Fonctionnement des structures de table dans Snowflake.

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

Spécifie le format de fichier de la table (pour le chargement et le déchargement des données), qui peut être, au choix :

FORMAT_NAME = nom_format_fichier

Spécifie un format de fichier nommé existant à utiliser pour charger/décharger des données dans la table. Le format de fichier nommé détermine le type de format (CSV, JSON, etc.), ainsi que toute autre option de format, pour les fichiers de données. Pour plus de détails, voir CREATE FILE FORMAT.

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

Spécifie le type de fichiers à charger/décharger dans la table.

Si un type de format de fichier est spécifié, des options supplémentaires spécifiques au format peuvent être spécifiées. Pour plus d’informations, voir les Options de type de format (dans ce chapitre).

Par défaut : TYPE = CSV

Note

FORMAT_NAME et TYPE s’excluent mutuellement ; pour éviter tout comportement indésirable, vous ne devez spécifier que l’une ou l’autre lors de la création d’une table.

STAGE_COPY_OPTIONS = ( ... )

Spécifie une (ou plusieurs) options à utiliser lors du chargement des données dans la table. Pour plus de détails, voir Options de copie (dans ce chapitre).

DATA_RETENTION_TIME_IN_DAYS = nb

Spécifie la période de conservation de la table pour que les actions Time Travel (SELECT, CLONE, UNDROP) puissent être effectuées sur les données historiques de la table. Pour plus de détails, voir Comprendre et utiliser la fonction « Time Travel » et Utilisation de tables temporaires et transitoires.

Pour une description détaillée de ce paramètre de niveau objet, ainsi que plus d’informations sur les paramètres d’objet, voir Paramètres.

Valeurs :

  • Édition Standard : 0 ou 1

  • Édition Enterprise :

    • 0 à 90 pour les tables permanentes

    • 0 ou 1 pour les tables temporaires et transitoires

Par défaut :

  • Édition Standard : 1

  • Édition Enterprise (ou supérieure) : 1 (sauf si une valeur par défaut différente a été spécifiée au niveau du compte, du schéma ou de la base de données)

Note

Une valeur de 0 désactive effectivement Time Travel pour la table.

CHANGE_TRACKING = TRUE | FALSE

Spécifie s’il faut activer le suivi des modifications sur la table.

  • TRUE active le suivi des modifications sur la table. Ce paramètre ajoute une paire de colonnes masquées à la table source et commence à stocker les métadonnées de suivi des modifications dans les colonnes. Ces colonnes consomment une petite quantité de stockage.

    Les métadonnées de suivi des modifications peuvent être interrogées à l’aide de la clause CHANGES pour les instructions SELECT, ou en créant et en interrogeant un ou plusieurs flux sur la table.

  • FALSE n’active pas le suivi des modifications sur la table.

Par défaut : FALSE

DEFAULT_DDL_COLLATION = 'spécification_classement'

Spécifie une spécification de classement par défaut pour les colonnes de la table, y compris les colonnes ajoutées à la table à l’avenir.

Pour plus de détails sur le paramètre, voir DEFAULT_DDL_COLLATION.

COPY GRANTS

Spécifie de conserver les privilèges d’accès de la table d’origine lorsqu’une nouvelle table est créée à l’aide de l’une des variables CREATE TABLE suivantes :

  • CREATE OR REPLACE TABLE

  • CREATE TABLE … LIKE

  • CREATE TABLE … CLONE

Ce paramètre copie tous les privilèges, excepté OWNERSHIP, de la table existante vers la nouvelle table. La nouvelle table n’hérite pas des attributions futures définies pour le type d’objet dans le schéma. Par défaut, le rôle qui exécute l’instruction CREATE TABLE possède la nouvelle table.

Si le paramètre n’est pas inclus dans l’instruction CREATE TABLE, la nouvelle table n’hérite pas des privilèges d’accès explicites accordés sur la table d’origine, mais des attributions futures définies pour le type d’objet dans le schéma.

Remarque :

  • Si l’instruction CREATE TABLE fait référence à plusieurs tables (par exemple, create or replace table TABLE1 clone TABLE2;), la clause COPY GRANTS copie les autorisations depuis la table remplacée (par exemple, TABLE1 dans cet exemple).

  • Avec le partage des données :

    • Si la table existante a été partagée avec un autre compte, la table de remplacement est également partagée.

    • Si la table existante a été partagée avec votre compte en tant que consommateur de données et que l’accès a été accordé à d’autres rôles dans le compte (en utilisant GRANT IMPORTED PRIVILEGES sur la base de données mère), l’accès est également accordé à la table de remplacement.

  • La sortie SHOW GRANTS pour la table de remplacement liste le concessionnaire des privilèges copiés comme le rôle qui a exécuté l’instruction CREATE TABLE avec l’horodatage courant lorsque l’instruction a été exécutée.

  • L’opération de copie des accords s’effectue atomiquement dans la commande CREATE TABLE (c’est-à-dire dans la même transaction).

COMMENT = 'litéral_chaine'

Spécifie un commentaire pour la table.

Par défaut : aucune valeur

Options de type de format (formatTypeOptions)

Les options de type de format sont utilisées pour charger des données dans des tables et décharger des données depuis des tables.

En fonction du type de format de fichier spécifié (STAGE_FILE_FORMAT = ( TYPE = ... )), vous pouvez inclure une ou plusieurs des options suivantes, spécifiques au format (séparées par des espaces, des virgules ou de nouvelles lignes) :

TYPE = CSV

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

Chargement et déchargement des données

Définition
  • Lors du chargement des données, spécifie l’algorithme de compression actuel pour le fichier de données. Snowflake utilise cette option pour détecter comment un fichier de données déjà compressé a été compressé afin que les données compressées dans le fichier puissent être extraites pour le chargement.

  • Lors du déchargement des données, compresse le fichier de données en utilisant l’algorithme de compression spécifié.

Valeurs

Valeurs prises en charge

Remarques

AUTO

Lors du chargement des données, l’algorithme de compression est détecté automatiquement, sauf pour les fichiers compressés par Brotli, qui ne peuvent actuellement pas être détectés automatiquement. Lors du déchargement des données, les fichiers sont automatiquement compressés en utilisant la valeur par défaut, qui est gzip.

GZIP

BZ2

BROTLI

Doit être spécifié lors du chargement/déchargement de fichiers compressés Brotli.

ZSTD

Zstandard v0.8 (et supérieur) est pris en charge.

DEFLATE

Fichiers compressés Deflate (avec en-tête zlib, RFC1950).

RAW_DEFLATE

Fichiers bruts compressés Deflate (sans en-tête, RFC1951).

NONE

Lors du chargement des données, indique que les fichiers n’ont pas été compressés. Lors du déchargement des données, spécifie que les fichiers déchargés ne sont pas compressés.

Par défaut

AUTO

RECORD_DELIMITER = 'caractère' | NONE
Utilisation

Chargement et déchargement des données

Définition

Un ou plusieurs caractères à un octet ou à plusieurs octets qui séparent les enregistrements dans un fichier d’entrée (chargement de données) ou un fichier déchargé (déchargement de données).

Accepte les séquences d’échappement courantes, les valeurs octales (préfixées par \\) ou les valeurs hexadécimales (préfixées par 0x). Par exemple, pour les enregistrements délimités par le caractère thorn (Þ), spécifiez la valeur octale (\\336) ou hexadécimale (0xDE). Accepte également une valeur de NONE.

Le délimiteur spécifié doit être un caractère UTF-8 valide et non une séquence aléatoire d’octets.

Les délimiteurs à plusieurs caractères sont également pris en charge ; cependant, le délimiteur pour RECORD_DELIMITER ou FIELD_DELIMITER ne peut pas être une sous-chaîne du délimiteur pour l’autre option de format de fichier (par exemple FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb'). Le délimiteur est limité à un maximum de 20 caractères. Ne spécifiez pas les caractères utilisés pour les autres options de format de fichier, tels que ESCAPE ou ESCAPE_UNENCLOSED_FIELD.

Par défaut
Chargement des données

Caractère de nouvelle ligne. Notez que « nouvelle ligne » fait sens, de sorte que \r\n sera compris comme une nouvelle ligne pour les fichiers sur une plate-forme Windows.

Déchargement des données

Caractère de nouvelle ligne (\n).

FIELD_DELIMITER = 'caractère' | NONE
Utilisation

Chargement et déchargement des données

Définition

Un ou plusieurs caractères à un octet ou à plusieurs octets qui séparent les champs d’un fichier d’entrée (chargement de données) ou d’un fichier déchargé (déchargement de données).

Accepte les séquences d’échappement courantes, les valeurs octales (préfixées par \\) ou les valeurs hexadécimales (préfixées par 0x). Par exemple, pour les champs délimités par le caractère thorn (Þ), spécifiez la valeur octale (\\336) ou hexadécimale (0xDE). Accepte également une valeur de NONE.

Le délimiteur spécifié doit être un caractère UTF-8 valide et non une séquence aléatoire d’octets.

Les délimiteurs à plusieurs caractères sont également pris en charge ; cependant, le délimiteur pour RECORD_DELIMITER ou FIELD_DELIMITER ne peut pas être une sous-chaîne du délimiteur pour l’autre option de format de fichier (par exemple FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb'). Le délimiteur est limité à un maximum de 20 caractères. Ne spécifiez pas les caractères utilisés pour les autres options de format de fichier, tels que ESCAPE ou ESCAPE_UNENCLOSED_FIELD.

Par défaut

virgule (,)

FILE_EXTENSION = 'chaîne' | NONE
Utilisation

Déchargement des données uniquement

Définition

Spécifie l’extension des fichiers déchargés dans une zone de préparation. Accepte toute extension. L’utilisateur est chargé de spécifier une extension de fichier qui peut être lue par tout logiciel ou service désiré.

Par défaut

null, ce qui signifie que l’extension du fichier est déterminée par le type de format : .csv[compression] , où compression est l’extension ajoutée par la méthode de compression, si COMPRESSION est défini.

Note

Si l’option de copie SINGLE est TRUE, alors la commande COPY décharge un fichier sans extension par défaut. Pour spécifier une extension de fichier, fournissez un nom et une extension de fichier dans le chemin emplacement_interne ou emplacement_externe (par ex. copy into @stage/data.csv).

SKIP_HEADER = entier
Utilisation

Chargement des données uniquement

Définition

Nombre de lignes au début du fichier à ignorer.

Notez que SKIP_HEADER n’utilise pas les valeurs RECORD_DELIMITER ou FIELD_DELIMITER pour déterminer la nature d’une ligne d’en-tête. Au lieu de cela, il ignore simplement le nombre spécifié de lignes délimitées par CRLF (retour chariot, saut de ligne) dans le fichier. RECORD_DELIMITER et FIELD_DELIMITER sont ensuite utilisés pour déterminer les lignes de données à charger.

Par défaut

0

SKIP_BLANK_LINES = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui indique d’ignorer toutes les lignes vides rencontrées dans les fichiers de données ; sinon, les lignes vides produisent une erreur de fin d’enregistrement (comportement par défaut).

Par défaut : FALSE

DATE_FORMAT = 'chaîne' | AUTO
Utilisation

Chargement et déchargement des données

Définition

Définit le format des valeurs de date dans les fichiers de données (chargement des données) ou la table (déchargement des données). Si une valeur n’est pas spécifiée ou est AUTO, la valeur du paramètre DATE_INPUT_FORMAT (chargement de données) ou DATE_OUTPUT_FORMAT (déchargement de données) est utilisée.

Par défaut

AUTO

TIME_FORMAT = 'chaîne' | AUTO
Utilisation

Chargement et déchargement des données

Définition

Définit le format des valeurs temporelles dans les fichiers de données (chargement des données) ou la table (déchargement des données). Si une valeur n’est pas spécifiée ou est AUTO, la valeur du paramètre TIME_INPUT_FORMAT (chargement de données) ou TIME_OUTPUT_FORMAT (déchargement de données) est utilisée.

Par défaut

AUTO

TIMESTAMP_FORMAT = chaîne' | AUTO
Utilisation

Chargement et déchargement des données

Définition

Définit le format des valeurs d’horodatage dans les fichiers de données (chargement des données) ou la table (déchargement des données). Si une valeur n’est pas spécifiée ou est AUTO, la valeur du paramètre TIMESTAMP_INPUT_FORMAT (chargement de données) ou TIMESTAMP_OUTPUT_FORMAT (déchargement de données) est utilisée.

Par défaut

AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8
Utilisation

Chargement et déchargement des données

Définition

Définit le format d’encodage pour l’entrée ou la sortie binaire. L’option peut être utilisée pour charger ou décharger des données à partir de colonnes binaires dans une table.

Par défaut

HEX

ESCAPE = 'caractère' | NONE
Utilisation

Chargement et déchargement des données

Définition

Chaîne d’un caractère unique utilisée comme caractère d’échappement pour les valeurs de champ. Un caractère d’échappement appelle une autre interprétation sur les caractères suivants dans une séquence de caractères. Vous pouvez utiliser le caractère ESCAPE pour interpréter les instances des caractères FIELD_DELIMITER, RECORD_DELIMITER ou FIELD_OPTIONALLY_ENCLOSED_BY dans les données comme des littéraux. Le caractère d’échappement peut également être utilisé pour échapper les instances de lui-même dans les données.

Accepte les séquences d’échappement, les valeurs octales ou les valeurs hexadécimales courantes.

  • Lors du chargement des données, spécifie le caractère d’échappement pour les champs délimités. Spécifiez le caractère utilisé pour délimiter les champs en définissant FIELD_OPTIONALLY_ENCLOSED_BY.

  • Lors du déchargement des données, si cette option est activée, elle remplace le jeu de caractères d’échappement pour ESCAPE_UNENCLOSED_FIELD.

Par défaut

NONE

ESCAPE_UNENCLOSED_FIELD = 'caractère' | NONE
Utilisation

Chargement et déchargement des données

Définition

Chaîne d’un caractère unique utilisée comme caractère d’échappement pour les valeurs de champs non délimitées uniquement. Un caractère d’échappement appelle une autre interprétation sur les caractères suivants dans une séquence de caractères. Vous pouvez utiliser le caractère ESCAPE pour interpréter les instances des caractères FIELD_DELIMITER ou RECORD_DELIMITER dans les données comme des littéraux. Le caractère d’échappement peut également être utilisé pour échapper les instances de lui-même dans les données.

Accepte les séquences d’échappement, les valeurs octales ou les valeurs hexadécimales courantes.

Notez que lors du déchargement des données, si ESCAPE est défini, le jeu de caractères d’échappement pour cette option de format de fichier l’emporte sur cette option.

Par défaut

barre oblique inverse (\\)

TRIM_SPACE = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie s’il faut supprimer les espaces blancs des champs.

Par exemple, si votre logiciel de base de données externe contient des champs entre guillemets, mais insère un espace d’en-tête, Snowflake lit l’espace d’en-tête plutôt que le caractère guillemet comme début du champ (c’est-à-dire que les guillemets sont interprétés comme faisant partie de la chaîne des données du champ). Définissez cette option sur TRUE pour supprimer les espaces indésirables pendant le chargement des données.

Comme autre exemple, si les espaces d’en-tête ou de fin entourent des guillemets qui délimitent les chaînes de caractères, vous pouvez supprimer les espaces environnants en utilisant cette option et le caractère guillemet en utilisant l’option FIELD_OPTIONALLY_ENCLOSED_BY. Notez que tous les espaces entre les guillemets sont préservés. Par exemple, en supposant que FIELD_DELIMITER = '|' et FIELD_OPTIONALLY_ENCLOSED_BY = '"' :

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

(les parenthèses dans cet exemple ne sont pas chargées ; elles sont utilisées pour délimiter le début et la fin des chaînes chargées)

Par défaut

FALSE

FIELD_OPTIONALLY_ENCLOSED_BY = 'caractère' | NONE
Utilisation

Chargement et déchargement des données

Définition

Caractère utilisé pour délimiter des chaînes. La valeur peut être NONE, un caractère guillemet simple (') ou un caractère guillemet double ("). Pour utiliser le caractère guillemet simple, utilisez la représentation octale ou hexadécimale (0x27) ou le double échappement en guillemet simple ('').

Lorsqu’un champ contient ce caractère, effectuez un échappement en utilisant le même caractère. Par exemple, si la valeur est le caractère de guillemet double et qu’un champ contient la chaîne A "B" C, effectuez un échappement des guillemets doubles comme suit :

A ""B"" C

Par défaut

NONE

NULL_IF = ( 'chaîne1' [ , 'chaîne2' , ... ] )
Utilisation

Chargement et déchargement des données

Définition

Chaîne utilisée pour les conversions entrante et sortante de SQL NULL :

  • Lors du chargement des données, Snowflake remplace ces chaînes de la source de chargement des données par SQL NULL. Pour spécifier plus d’une chaîne, mettez la liste des chaînes entre parenthèses et utilisez des virgules pour séparer chaque valeur.

    Par exemple :

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

    Notez que cette option peut inclure des chaînes vides.

  • Lors du déchargement des données, Snowflake convertit les valeurs NULL SQL vers la première valeur de la liste.

Par défaut

\\N (c.-à-d. NULL, qui suppose que la valeur ESCAPE_UNENCLOSED_FIELD est \\)

ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie s’il faut générer une erreur d’analyse si le nombre de colonnes délimitées (c’est-à-dire de champs) dans un fichier d’entrée ne correspond pas au nombre de colonnes de la table correspondante.

Si ce paramètre est réglé sur FALSE, aucune erreur n’est générée et le chargement continue. Si le fichier est chargé correctement :

  • Si le fichier d’entrée contient des enregistrements contenant plus de champs que de colonnes dans la table, les champs correspondants sont chargés par ordre d’occurrence dans le fichier et les autres champs ne sont pas chargés.

  • Si le fichier d’entrée contient des enregistrements avec moins de champs que de colonnes dans la table, les colonnes qui ne correspondent pas dans la table sont chargées avec des valeurs NULL.

Cette option suppose que tous les enregistrements du fichier d’entrée ont la même longueur (c’est-à-dire qu’un fichier contenant des enregistrements de longueur variable renvoie une erreur quelle que soit la valeur spécifiée pour ce paramètre).

Par défaut

TRUE

Note

Lors de la transformation des données pendant le chargement (c’est-à-dire, en utilisant une requête comme source pour la commande COPY), cette option est ignorée. Il n’est pas nécessaire que vos fichiers de données aient le même nombre et le même ordre de colonnes que votre table cible.

REPLACE_INVALID_CHARACTERS = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie s’il faut remplacer les caractères UTF-8 non valides par le caractère de remplacement Unicode ().

S’il est défini sur TRUE, Snowflake remplace les caractères UTF-8 non valides par le caractère de remplacement Unicode.

S’il est défini sur FALSE, l’opération de chargement génère une erreur lorsqu’un codage de caractères UTF-8 non valide est détecté.

Par défaut

FALSE

VALIDATE_UTF8 = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie s’il faut valider l’encodage des caractères UTF-8 dans les données de colonne de chaîne.

S’il est réglé sur TRUE, Snowflake valide l’encodage des caractères UTF-8 dans les données de colonne de chaîne. Lorsqu’un encodage de caractères UTF-8 non valide est détecté, la commande COPY produit une erreur.

Par défaut

TRUE

Important

Cette option n’est fournie que pour assurer une rétrocompatibilité avec les versions antérieures de Snowflake. Nous vous recommandons de conserver cette option à moins que l’assistance de Snowflake ne vous demande de la désactiver.

EMPTY_FIELD_AS_NULL = TRUE | FALSE
Utilisation

Chargement et déchargement des données

Définition
  • Lors du chargement de données, spécifie s’il faut insérer SQL NULL pour les champs vides dans un fichier d’entrée, qui sont représentés par deux délimiteurs successifs (par ex., ,,).

    Si l’option est définie sur FALSE, Snowflake essaie de placer un champ vide dans le type de colonne correspondant. Une chaîne vide est insérée dans les colonnes de type STRING. Pour les autres types de colonne, la commande COPY produit une erreur.

  • Lors du déchargement des données, cette option est utilisée en combinaison avec FIELD_OPTIONALLY_ENCLOSED_BY. Lorsque FIELD_OPTIONALLY_ENCLOSED_BY = NONE, le paramètre EMPTY_FIELD_AS_NULL = FALSE spécifie de décharger les chaînes vides dans les tables pour vider les valeurs de chaîne sans guillemets entourant les valeurs de champ.

    S’il est défini sur TRUE, FIELD_OPTIONALLY_ENCLOSED_BY doit spécifier un caractère pour entourer les chaînes.

Par défaut

TRUE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie s’il faut ignorer le BOM (marque d’ordre d’octet), s’il est présent dans un fichier de données. Une marque BOM est un code de caractère placé au début d’un fichier de données qui définit l’ordre des octets et la forme de l’encodage.

S’il est réglé sur FALSE, Snowflake reconnaît n’importe quel BOM dans les fichiers de données, ce qui pourrait entraîner une erreur BOM ou une fusion dans la première colonne du tableau.

Par défaut

TRUE

ENCODING = 'chaîne'
Utilisation

Chargement des données uniquement

Définition

Chaîne (constante) qui spécifie le jeu de caractères des données sources lors du chargement des données dans une table.

Jeu de caractères

Valeur ENCODING 

Langues acceptées

Remarques

Big5

BIG5

Chinois traditionnel

EUC-JP

EUCJP

Japonais

EUC-KR

EUCKR

Coréen

GB18030

GB18030

Chinois

IBM420

IBM420

Arabe

IBM424

IBM424

Hébreu

ISO-2022-CN

ISO2022CN

Chinois simplifié

ISO-2022-JP

ISO2022JP

Japonais

ISO-2022-KR

ISO2022KR

Coréen

ISO-8859-1

ISO88591

Allemand, anglais, danois, français, italien, norvégien, néerlandais, portugais, suédois

ISO-8859-2

ISO88592

Tchèque, hongrois, polonais, roumain

ISO-8859-5

ISO88595

Russe

ISO-8859-6

ISO88596

Arabe

ISO-8859-7

ISO88597

Grec

ISO-8859-8

ISO88598

Hébreu

ISO-8859-9

ISO88599

Turc

KOI8-R

KOI8R

Russe

Shift_JIS

SHIFTJIS

Japonais

UTF-8

UTF8

Toutes les langues

Pour charger des données à partir de fichiers délimités (CSV, TSV, etc.), UTF-8 est la valeur par défaut. . . Pour charger des données à partir de tous les autres formats de fichier pris en charge (JSON, Avro, etc.), ainsi que pour décharger des données, UTF-8 est le seul jeu de caractères pris en charge.

UTF-16

UTF16

Toutes les langues

UTF-16BE

UTF16BE

Toutes les langues

UTF-16LE

UTF16LE

Toutes les langues

UTF-32

UTF32

Toutes les langues

UTF-32BE

UTF32BE

Toutes les langues

UTF-32LE

UTF32LE

Toutes les langues

windows-1250

WINDOWS1250

Tchèque, hongrois, polonais, roumain

windows-1251

WINDOWS1251

Russe

windows-1252

WINDOWS1252

Allemand, anglais, danois, français, italien, norvégien, néerlandais, portugais, suédois

windows-1253

WINDOWS1253

Grec

windows-1254

WINDOWS1254

Turc

windows-1255

WINDOWS1255

Hébreu

windows-1256

WINDOWS1256

Arabe

Par défaut

UTF8

Note

Snowflake stocke toutes les données en interne dans le jeu de caractères UTF-8. Les données sont converties en UTF-8 avant d’être chargées dans Snowflake. Si l’option de format de fichier VALIDATE_UTF8 est TRUE, Snowflake valide l’encodage de caractères UTF-8 dans les données de colonnes de chaînes après sa conversion à partir de son encodage de caractères original.

TYPE = JSON

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

Chargement et déchargement des données

Définition
  • Lors du chargement des données, spécifie l’algorithme de compression actuel pour le fichier de données. Snowflake utilise cette option pour détecter comment un fichier de données déjà compressé a été compressé afin que les données compressées dans le fichier puissent être extraites pour le chargement.

  • Lors du déchargement des données, compresse le fichier de données en utilisant l’algorithme de compression spécifié.

Valeurs

Valeurs prises en charge

Remarques

AUTO

Lors du chargement des données, l’algorithme de compression est détecté automatiquement, sauf pour les fichiers compressés par Brotli, qui ne peuvent actuellement pas être détectés automatiquement. Lors du déchargement des données, les fichiers sont automatiquement compressés en utilisant la valeur par défaut, qui est gzip.

GZIP

BZ2

BROTLI

Doit être spécifié lors du chargement/déchargement de fichiers compressés Brotli.

ZSTD

Zstandard v0.8 (et supérieur) est pris en charge.

DEFLATE

Fichiers compressés Deflate (avec en-tête zlib, RFC1950).

RAW_DEFLATE

Fichiers bruts compressés Deflate (sans en-tête, RFC1951).

NONE

Lors du chargement des données, indique que les fichiers n’ont pas été compressés. Lors du déchargement des données, spécifie que les fichiers déchargés ne sont pas compressés.

Par défaut

AUTO

DATE_FORMAT = 'chaîne' | AUTO
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données JSON dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Définit le format des valeurs de chaînes de date dans les fichiers de données. Si une valeur n’est pas spécifiée ou est AUTO, la valeur du paramètre DATE_INPUT_FORMAT est utilisée.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

AUTO

TIME_FORMAT = 'chaîne' | AUTO
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données JSON dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Définit le format des valeurs de chaînes d’heure dans les fichiers de données. Si une valeur n’est pas spécifiée ou est AUTO, la valeur du paramètre TIME_INPUT_FORMAT est utilisée.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

AUTO

TIMESTAMP_FORMAT = chaîne' | AUTO
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données JSON dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Définit le format des valeurs de chaînes d’horodatage dans les fichiers de données. Si une valeur n’est pas spécifiée ou est AUTO, la valeur du paramètre TIMESTAMP_INPUT_FORMAT est utilisée.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données JSON dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Définit le format d’encodage des valeurs de chaînes binaires dans les fichiers de données. L’option peut être utilisée pour charger des données à partir de colonnes binaires dans une table.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

HEX

TRIM_SPACE = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données JSON dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Booléen qui spécifie s’il faut supprimer les espaces blancs de début et de fin des chaînes.

Par exemple, si votre logiciel de base de données externe contient des champs entre guillemets, mais insère un espace d’en-tête, Snowflake lit l’espace d’en-tête plutôt que le caractère guillemet comme début du champ (c’est-à-dire que les guillemets sont interprétés comme faisant partie de la chaîne des données du champ). Définissez cette option sur TRUE pour supprimer les espaces indésirables pendant le chargement des données.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

FALSE

NULL_IF = ( 'chaîne1' [ , 'chaîne2' , ... ] )
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données JSON dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Chaîne utilisée pour effectuer des conversions vers et depuis SQL NULL. Snowflake remplace ces chaînes de la source de chargement des données par SQL NULL. Pour spécifier plus d’une chaîne, mettez la liste des chaînes entre parenthèses et utilisez des virgules pour séparer chaque valeur.

Par exemple :

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

Notez que cette option peut inclure des chaînes vides.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

\\N (c.-à-d. NULL, qui suppose que la valeur ESCAPE_UNENCLOSED_FIELD est \\)

FILE_EXTENSION = 'chaîne' | NONE
Utilisation

Déchargement des données uniquement

Définition

Spécifie l’extension des fichiers déchargés dans une zone de préparation. Accepte toute extension. L’utilisateur est chargé de spécifier une extension de fichier qui peut être lue par tout logiciel ou service désiré.

Par défaut

null, ce qui signifie que l’extension du fichier est déterminée par le type de format : .json[compression] , où compression est l’extension ajoutée par la méthode de compression, si COMPRESSION est défini.

ENABLE_OCTAL = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui permet d’analyser les nombres octaux.

Par défaut

FALSE

ALLOW_DUPLICATE = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui indique d’autoriser les noms de champs d’objets dupliqués (seul le dernier sera conservé).

Par défaut

FALSE

STRIP_OUTER_ARRAY = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui demande à l’analyseur JSON de supprimer les crochets extérieurs (comme [ ]).

Par défaut

FALSE

STRIP_NULL_VALUES = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui demande à l’analyseur JSON de supprimer les champs d’objets ou les éléments de tableau contenant des valeurs null. Par exemple, lorsque défini sur TRUE :

Avant

Après

[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}}

Par défaut

FALSE

IGNORE_UTF8_ERRORS = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie si les erreurs d’encodage UTF-8 produisent des conditions d’erreur. Si ce paramètre est réglé sur TRUE, toute séquence UTF-8 non valide est remplacée discrètement par un caractère Unicode U+FFFD (c.-à-d. un « caractère de remplacement »).

Par défaut

FALSE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie s’il faut ignorer le BOM (marque d’ordre d’octet), s’il est présent dans un fichier de données. Une marque BOM est un code de caractère placé au début d’un fichier de données qui définit l’ordre des octets et la forme de l’encodage.

S’il est réglé sur FALSE, Snowflake reconnaît n’importe quel BOM dans les fichiers de données, ce qui pourrait entraîner une erreur BOM ou une fusion dans la première colonne du tableau.

Par défaut

TRUE

TYPE = AVRO

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

Chargement et déchargement des données

Définition
  • Lors du chargement des données, spécifie l’algorithme de compression actuel pour le fichier de données. Snowflake utilise cette option pour détecter comment un fichier de données déjà compressé a été compressé afin que les données compressées dans le fichier puissent être extraites pour le chargement.

  • Lors du déchargement des données, compresse le fichier de données en utilisant l’algorithme de compression spécifié.

Valeurs

Valeurs prises en charge

Remarques

AUTO

Lors du chargement des données, l’algorithme de compression est détecté automatiquement, sauf pour les fichiers compressés par Brotli, qui ne peuvent actuellement pas être détectés automatiquement. Lors du déchargement des données, les fichiers sont automatiquement compressés en utilisant la valeur par défaut, qui est gzip.

GZIP

BZ2

BROTLI

Doit être spécifié lors du chargement/déchargement de fichiers compressés Brotli.

ZSTD

Zstandard v0.8 (et supérieur) est pris en charge.

DEFLATE

Fichiers compressés Deflate (avec en-tête zlib, RFC1950).

RAW_DEFLATE

Fichiers bruts compressés Deflate (sans en-tête, RFC1951).

NONE

Lors du chargement des données, indique que les fichiers n’ont pas été compressés. Lors du déchargement des données, spécifie que les fichiers déchargés ne sont pas compressés.

Par défaut

AUTO

TRIM_SPACE = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données Avro dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Booléen qui spécifie s’il faut supprimer les espaces blancs de début et de fin des chaînes.

Par exemple, si votre logiciel de base de données externe contient des champs entre guillemets, mais insère un espace d’en-tête, Snowflake lit l’espace d’en-tête plutôt que le caractère guillemet comme début du champ (c’est-à-dire que les guillemets sont interprétés comme faisant partie de la chaîne des données du champ). Définissez cette option sur TRUE pour supprimer les espaces indésirables pendant le chargement des données.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

FALSE

NULL_IF = ( 'chaîne1' [ , 'chaîne2' , ... ] )
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données Avro dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Chaîne utilisée pour effectuer des conversions vers et depuis SQL NULL. Snowflake remplace ces chaînes de la source de chargement des données par SQL NULL. Pour spécifier plus d’une chaîne, mettez la liste des chaînes entre parenthèses et utilisez des virgules pour séparer chaque valeur.

Par exemple :

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

Notez que cette option peut inclure des chaînes vides.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

\\N (c.-à-d. NULL, qui suppose que la valeur ESCAPE_UNENCLOSED_FIELD est \\)

TYPE = ORC

TRIM_SPACE = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données ORC dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Booléen qui spécifie s’il faut supprimer les espaces blancs de début et de fin des chaînes.

Par exemple, si votre logiciel de base de données externe contient des champs entre guillemets, mais insère un espace d’en-tête, Snowflake lit l’espace d’en-tête plutôt que le caractère guillemet comme début du champ (c’est-à-dire que les guillemets sont interprétés comme faisant partie de la chaîne des données du champ). Définissez cette option sur TRUE pour supprimer les espaces indésirables pendant le chargement des données.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

FALSE

NULL_IF = ( 'chaîne1' [ , 'chaîne2' , ... ] )
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données ORC dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Chaîne utilisée pour effectuer des conversions vers et depuis SQL NULL. Snowflake remplace ces chaînes de la source de chargement des données par SQL NULL. Pour spécifier plus d’une chaîne, mettez la liste des chaînes entre parenthèses et utilisez des virgules pour séparer chaque valeur.

Par exemple :

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

Notez que cette option peut inclure des chaînes vides.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

\\N (c.-à-d. NULL, qui suppose que la valeur ESCAPE_UNENCLOSED_FIELD est \\)

TYPE = PARQUET

COMPRESSION = AUTO | LZO | SNAPPY | NONE
Utilisation

Chargement et déchargement des données

Définition

  • Lors du chargement des données, spécifie l’algorithme de compression actuel pour les colonnes des fichiers Parquet.

  • Lors du déchargement des données, compresse le fichier de données en utilisant l’algorithme de compression spécifié.

Valeurs

Valeurs prises en charge

Remarques

AUTO

Lors du chargement des données, l’algorithme de compression est détecté automatiquement. Prend en charge les algorithmes de compression suivants : Brotli, gzip, Lempel–Ziv–Oberhumer (LZO), LZ4, Snappy ou Zstandard v0.8 (et versions ultérieures). . Lors du déchargement des données, les fichiers déchargés sont compressés en utilisant l’algorithme de compression Snappy par défaut.

LZO

Lors du déchargement des données, les fichiers sont compressés à l’aide de l’algorithme Snappy par défaut. Si vous déchargez des données dans des fichiers LZO compressés, spécifiez cette valeur.

SNAPPY

Lors du déchargement des données, les fichiers sont compressés à l’aide de l’algorithme Snappy par défaut. Vous pouvez spécifier cette valeur en option.

NONE

Lors du chargement des données, indique que les fichiers n’ont pas été compressés. Lors du déchargement des données, spécifie que les fichiers déchargés ne sont pas compressés.

Par défaut

AUTO

SNAPPY_COMPRESSION = TRUE | FALSE
Utilisation

Déchargement des données uniquement

AUTO | Les fichiers déchargés sont compressés à l’aide de l’algorithme de compression Snappy par défaut. SNAPPY | Peut être spécifié lors du déchargement de fichiers compressés par Snappy. NONE | Lors du chargement des données, indique que les fichiers n’ont pas été compressés. Lors du déchargement des données, spécifie que les fichiers déchargés ne sont pas compressés.

Définition

Booléen qui spécifie si les fichiers déchargés sont compressés en utilisant l’algorithme SNAPPY.

Note

Obsolète. Utilisez plutôt COMPRESSION = SNAPPY.

Limites

Uniquement pris en charge pour les opérations de déchargement de données.

Par défaut

TRUE

BINARY_AS_TEXT = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie s’il faut interpréter les colonnes sans type de données logiques défini comme du texte UTF-8. Lorsqu’il est réglé sur FALSE, Snowflake interprète ces colonnes comme des données binaires.

Limites

Uniquement pris en charge pour les opérations de chargement de données.

Par défaut

TRUE

TRIM_SPACE = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données Parquet dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Booléen qui spécifie s’il faut supprimer les espaces blancs de début et de fin des chaînes.

Par exemple, si votre logiciel de base de données externe contient des champs entre guillemets, mais insère un espace d’en-tête, Snowflake lit l’espace d’en-tête plutôt que le caractère guillemet comme début du champ (c’est-à-dire que les guillemets sont interprétés comme faisant partie de la chaîne des données du champ). Définissez cette option sur TRUE pour supprimer les espaces indésirables pendant le chargement des données.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

FALSE

NULL_IF = ( 'chaîne1' [ , 'chaîne2' , ... ] )
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données Parquet dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Chaîne utilisée pour effectuer des conversions vers et depuis SQL NULL. Snowflake remplace ces chaînes de la source de chargement des données par SQL NULL. Pour spécifier plus d’une chaîne, mettez la liste des chaînes entre parenthèses et utilisez des virgules pour séparer chaque valeur.

Par exemple :

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

Notez que cette option peut inclure des chaînes vides.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

\\N (c.-à-d. NULL, qui suppose que la valeur ESCAPE_UNENCLOSED_FIELD est \\)

TYPE = XML

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

Chargement et déchargement des données

Définition
  • Lors du chargement des données, spécifie l’algorithme de compression actuel pour le fichier de données. Snowflake utilise cette option pour détecter comment un fichier de données déjà compressé a été compressé afin que les données compressées dans le fichier puissent être extraites pour le chargement.

  • Lors du déchargement des données, compresse le fichier de données en utilisant l’algorithme de compression spécifié.

Valeurs

Valeurs prises en charge

Remarques

AUTO

Lors du chargement des données, l’algorithme de compression est détecté automatiquement, sauf pour les fichiers compressés par Brotli, qui ne peuvent actuellement pas être détectés automatiquement. Lors du déchargement des données, les fichiers sont automatiquement compressés en utilisant la valeur par défaut, qui est gzip.

GZIP

BZ2

BROTLI

Doit être spécifié lors du chargement/déchargement de fichiers compressés Brotli.

ZSTD

Zstandard v0.8 (et supérieur) est pris en charge.

DEFLATE

Fichiers compressés Deflate (avec en-tête zlib, RFC1950).

RAW_DEFLATE

Fichiers bruts compressés Deflate (sans en-tête, RFC1951).

NONE

Lors du chargement des données, indique que les fichiers n’ont pas été compressés. Lors du déchargement des données, spécifie que les fichiers déchargés ne sont pas compressés.

Par défaut

AUTO

IGNORE_UTF8_ERRORS = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie si les erreurs d’encodage UTF-8 produisent des conditions d’erreur. Si ce paramètre est réglé sur TRUE, toute séquence UTF-8 non valide est remplacée discrètement par un caractère Unicode U+FFFD (c.-à-d. un « caractère de remplacement »).

Par défaut

FALSE

PRESERVE_SPACE = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie si l’analyseur XML préserve les espaces d’en-tête et de fin dans le contenu des éléments.

Par défaut

FALSE

STRIP_OUTER_ELEMENT = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie si l’analyseur XML supprime l’élément externe XML, exposant les éléments de 2e niveau comme des documents séparés.

Par défaut

FALSE

DISABLE_SNOWFLAKE_DATA = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie si l’analyseur XML désactive la reconnaissance des balises de données semi-structurées Snowflake.

Par défaut

FALSE

DISABLE_AUTO_CONVERT = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie si l’analyseur XML désactive la conversion automatique des valeurs numériques et booléennes du texte en représentation native.

Par défaut

FALSE

SKIP_BYTE_ORDER_MARK = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

Booléen qui spécifie s’il faut sauter n’importe quel BOM (marque d’ordre d’octet) présent dans un fichier d’entrée. Une marque BOM est un code de caractère placé au début d’un fichier de données qui définit l’ordre des octets et la forme de l’encodage.

S’il est réglé sur FALSE, Snowflake reconnaît n’importe quel BOM dans les fichiers de données, ce qui pourrait entraîner une erreur BOM ou une fusion dans la première colonne du tableau.

Par défaut

TRUE

TRIM_SPACE = TRUE | FALSE
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données XML dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Booléen qui spécifie s’il faut supprimer les espaces blancs de début et de fin des chaînes.

Par exemple, si votre logiciel de base de données externe contient des champs entre guillemets, mais insère un espace d’en-tête, Snowflake lit l’espace d’en-tête plutôt que le caractère guillemet comme début du champ (c’est-à-dire que les guillemets sont interprétés comme faisant partie de la chaîne des données du champ). Définissez cette option sur TRUE pour supprimer les espaces indésirables pendant le chargement des données.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

FALSE

NULL_IF = ( 'chaîne1' [ , 'chaîne2' , ... ] )
Utilisation

Chargement des données uniquement

Définition

S’applique uniquement lors du chargement de données XML dans des colonnes distinctes (c’est-à-dire en utilisant l’option de copie MATCH_BY_COLUMN_NAME ou une transformation COPY). Chaîne utilisée pour effectuer des conversions vers et depuis SQL NULL. Snowflake remplace ces chaînes de la source de chargement des données par SQL NULL. Pour spécifier plus d’une chaîne, mettez la liste des chaînes entre parenthèses et utilisez des virgules pour séparer chaque valeur.

Par exemple :

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

Notez que cette option peut inclure des chaînes vides.

Cette option de format de fichier est actuellement une fonction d’aperçu.

Par défaut

\\N (c.-à-d. NULL, qui suppose que la valeur ESCAPE_UNENCLOSED_FIELD est \\)

Options de copie (copyOptions)

Les options de copie sont utilisées pour charger des données dans et décharger des données de tables.

Vous pouvez spécifier une ou plusieurs des options de copie suivantes (séparées par des espaces, des virgules ou de nouvelles lignes) :

STAGE_COPY_OPTIONS = ( ... )

ON_ERROR = CONTINUE | SKIP_FILE | SKIP_FILE_nb | SKIP_FILE_nb% | ABORT_STATEMENT

Chaîne (constante) qui spécifie l’action à effectuer lorsqu’une erreur se produit lors du chargement de données à partir d’un fichier :

Valeurs prises en charge

Remarques

CONTINUE

Continuez à charger le fichier. L’instruction COPY renvoie un message d’erreur pour un maximum d’une erreur rencontrée par fichier de données. Notez que la différence entre les valeurs des colonnes ROWS_PARSED et ROWS_LOADED représente le nombre de lignes qui incluent les erreurs détectées. Cependant, chacune de ces lignes peut contenir plusieurs erreurs. Pour afficher toutes les erreurs dans les fichiers de données, utilisez le paramètre VALIDATION_MODE ou interrogez la fonction VALIDATE.

SKIP_FILE

Ignorez le fichier s’il y a des erreurs rencontrées dans le fichier.

SKIP_FILE_nb (par exemple SKIP_FILE_10)

Ignorez le fichier lorsque le nombre d’erreurs dans le fichier est égal ou supérieur au nombre spécifié.

SKIP_FILE_nb% (par exemple SKIP_FILE_10%)

Ignorez le fichier lorsque le pourcentage d’erreurs dans le fichier dépasse le pourcentage spécifié.

ABORT_STATEMENT

Annulez l’instruction COPY en cas d’erreur.

Par défaut :

Chargement en lot à l’aide de COPY

ABORT_STATEMENT

Snowpipe

SKIP_FILE

SIZE_LIMIT = nb

Nombre (> 0) qui spécifie la taille maximale (en octets) des données à charger pour une instruction COPY donnée. Lorsque le seuil est dépassé, l’opération COPY interrompt le chargement des fichiers. Cette option est couramment utilisée pour charger un groupe commun de fichiers en utilisant plusieurs instructions COPY. Pour chaque instruction, la charge de données continue jusqu’à ce que le SIZE_LIMIT spécifié soit dépassé, avant de passer à l’instruction suivante.

Par exemple, supposons que des fichiers dans un chemin d’accès de zone de préparation présentent chacun une taille de 10 MB. Si plusieurs instructions COPY établissent SIZE_LIMIT à 25000000 (25 MB), chacune chargerait 3 fichiers. En d’autres termes, chaque opération COPY serait interrompue après le dépassement du seuil SIZE_LIMIT.

Notez qu’au moins un fichier est chargé, quelle que soit la valeur spécifiée pour SIZE_LIMIT:code: à moins qu’il n’y ait aucun fichier à charger.

Valeur par défaut : null (aucune limite de taille)

PURGE = TRUE | FALSE

Booléen qui spécifie s’il faut supprimer automatiquement les fichiers de données de la zone de préparation une fois que les données ont été chargées avec succès.

Si cette option est définie sur TRUE, nous faisons de notre mieux pour supprimer les fichiers de données chargés avec succès. Si l’opération de purge échoue pour une raison quelconque, aucune erreur n’est renvoyée actuellement. Nous vous recommandons de répertorier périodiquement les fichiers mis en zone de préparation (à l’aide de LIST) et de supprimer manuellement les fichiers correctement chargés, le cas échéant.

Par défaut : FALSE

RETURN_FAILED_ONLY = TRUE | FALSE

Booléen qui spécifie s’il faut renvoyer uniquement les fichiers qui n’ont pas réussi à se charger dans le résultat de l’instruction.

Par défaut : FALSE

MATCH_BY_COLUMN_NAME = CASE_SENSITIVE | CASE_INSENSITIVE | NONE

Chaîne qui spécifie si elle doit charger des données semi-structurées dans des colonnes de la table cible qui correspondent aux colonnes correspondantes représentées dans les données.

Pour qu’une colonne corresponde, les critères suivants doivent être remplis :

  • La colonne représentée dans les données doit avoir exactement le même nom que la colonne de la table. L’option de copie prend en charge la casse pour les noms de colonne. L’ordre des colonnes n’a pas d’importance.

  • La colonne de la table doit avoir un type de données compatible avec les valeurs de la colonne représentée dans les données. Par exemple, la chaîne, le nombre et les valeurs booléennes peuvent tous être chargés dans une colonne de variantes.

Les options suivantes sont prises en charge :

CASE_SENSITIVE | CASE_INSENSITIVE

Chargez des données semi-structurées dans des colonnes de la table cible qui correspondent aux colonnes correspondantes représentées dans les données. Les noms de colonne sont sensibles à la casse (CASE_SENSITIVE) ou ne sont pas sensibles à la casse (CASE_INSENSITIVE).

L’opération COPY vérifie qu’au moins une colonne de la table cible correspond à une colonne représentée dans les fichiers de données. Si une correspondance est trouvée, les valeurs des fichiers de données sont chargées dans la ou les colonnes. Si aucune correspondance n’est trouvée, un ensemble de valeurs NULL pour chaque enregistrement des fichiers est chargé dans la table.

Note

  • Si des colonnes supplémentaires non correspondantes sont présentes dans les fichiers de données, les valeurs de ces colonnes ne sont pas chargées.

  • Si des colonnes non correspondantes supplémentaires sont présentes dans la table cible, l’opération COPY insère des valeurs NULL dans ces colonnes. Ces colonnes doivent prendre en charge les valeurs NULL.

  • L’instruction COPY ne permet pas de spécifier une requête pour transformer davantage les données pendant le chargement (c’est-à-dire transformation COPY).

NONE

L’opération COPY charge les données semi-structurées dans une colonne variante ou, si une requête est incluse dans l’instruction COPY, transforme les données.

Par défaut

NONE

Note

Les limitations suivantes s’appliquent actuellement :

  • MATCH_BY_COLUMN_NAME ne peut pas être utilisé avec le paramètre VALIDATION_MODE dans une instruction COPY pour valider les données de zone de préparation plutôt que de les charger dans la table cible.

  • Données Parquet uniquement. Lorsque MATCH_BY_COLUMN_NAME est défini sur CASE_SENSITIVE ou CASE_INSENSITIVE, une valeur de colonne vide (par exemple "col1": "") génère une erreur.

ENFORCE_LENGTH = TRUE | FALSE

Syntaxe alternative pour TRUNCATECOLUMNS avec logique inverse (pour assurer une compatibilité avec les autres systèmes)

Booléen qui spécifie s’il faut tronquer les chaînes de texte qui dépassent la longueur de colonne cible :

  • Si TRUE, l’instruction COPY produit une erreur si une chaîne chargée dépasse la longueur de la colonne cible.

  • Si FALSE, les chaînes sont automatiquement tronquées suivant la longueur de colonne cible.

Actuellement, cette option de copie prend uniquement en charge les données CSV.

Par défaut : TRUE

Note

  • Si la longueur de la colonne de la chaîne de caractères cible est réglée au maximum (par exemple, VARCHAR (16777216)), une chaîne entrante ne peut pas dépasser cette longueur ; sinon, la commande COPY produit une erreur.

  • Ce paramètre est fonctionnellement équivalent à TRUNCATECOLUMNS, mais a le comportement inverse. Il est fourni pour assurer une compatibilité avec d’autres bases de données. Il n’est nécessaire d’inclure qu’un seul de ces deux paramètres dans une instruction COPY pour produire le résultat souhaité.

TRUNCATECOLUMNS = TRUE | FALSE

Syntaxe alternative pour ENFORCE_LENGTH avec logique inverse (pour assurer une compatibilité avec les autres systèmes)

Booléen qui spécifie s’il faut tronquer les chaînes de texte qui dépassent la longueur de colonne cible :

  • Si TRUE, les chaînes sont automatiquement tronquées suivant la longueur de colonne cible.

  • Si FALSE, l’instruction COPY produit une erreur si une chaîne chargée dépasse la longueur de la colonne cible.

Actuellement, cette option de copie prend uniquement en charge les données CSV.

Par défaut : FALSE

Note

  • Si la longueur de la colonne de la chaîne de caractères cible est réglée au maximum (par exemple, VARCHAR (16777216)), une chaîne entrante ne peut pas dépasser cette longueur ; sinon, la commande COPY produit une erreur.

  • Ce paramètre est fonctionnellement équivalent à ENFORCE_LENGTH, mais a le comportement inverse. Il est fourni pour assurer une compatibilité avec d’autres bases de données. Il n’est nécessaire d’inclure qu’un seul de ces deux paramètres dans une instruction COPY pour produire le résultat souhaité.

FORCE = TRUE | FALSE

Booléen qui demande de charger tous les fichiers, qu’ils aient été chargés précédemment ou non et qu’ils n’aient pas changé depuis leur chargement. Notez que cette option recharge les fichiers, dupliquant potentiellement les données dans une table.

Par défaut : FALSE

LOAD_UNCERTAIN_FILES = TRUE | FALSE

Booléen qui spécifie de charger les fichiers pour lesquels le statut de chargement est inconnu. La commande COPY ignore ces fichiers par défaut.

Le statut de chargement est inconnu si toutes les conditions suivantes sont réunies :

  • La date LAST_MODIFIED du fichier (c.-à-d. la date à laquelle le fichier a été mis en zone de préparation) remonte à plus de 64 jours.

  • L’ensemble initial de données a été chargé dans la table il y a plus de 64 jours.

  • Si le fichier a déjà été chargé avec succès dans la table, cet événement s’est produit plus de 64 jours auparavant.

Pour forcer la commande COPY à charger tous les fichiers, que le statut de chargement soit connu ou non, utilisez plutôt l’option FORCE.

Pour plus d’informations sur les statuts de chargement incertains, voir Chargement d’anciens fichiers.

Par défaut : FALSE

Notes sur l’utilisation

  • Un schéma ne peut pas contenir de tables et/ou de vues portant le même nom. Lors de la création d’une table :

    • Si une vue portant le même nom existe déjà dans le schéma, une erreur est renvoyée et la table n’est pas créée.

    • Si une table portant le même nom existe déjà dans le schéma, une erreur est renvoyée et la table n’est pas créée, sauf si le mot clé facultatif OR REPLACE est inclus dans la commande.

    Important

    Utiliser OR REPLACE équivaut à utiliser DROP TABLE sur la table existante et créer ensuite une nouvelle table avec le même nom ; cependant, la table détruite n’est pas définitivement supprimée du système. En revanche, il est conservé dans Time Travel. Cela est important, car si les tables détruites dans Time Travel peuvent être récupérées, elles contribuent aussi au stockage des données pour votre compte. Pour plus d’informations, voir Coûts de stockage pour Time Travel et Fail-safe.

  • Comme les mots clés réservés, les noms de fonctions réservés ANSI (par exemple CURRENT_DATE, CURRENT_TIMESTAMP) ne peuvent pas être utilisés comme noms de colonnes.

  • CREATE TABLE … AS SELECT (CTAS):

    • Si les alias des noms de colonnes de la liste SELECT sont des colonnes valides, les définitions de colonnes ne sont pas requises dans l’instruction CTAS ; si elles sont omises, les noms et types de colonnes sont déduits de la requête sous-jacente :

      CREATE TABLE <table_name> AS SELECT ...
      

      Alternativement, les noms peuvent être explicitement spécifiés à l’aide de la syntaxe suivante :

      CREATE TABLE <table_name> ( <col1_name> , <col2_name> , ... ) AS SELECT ...
      

      Le nombre de noms de colonnes spécifiés doit correspondre au nombre d’éléments de la liste SELECT de la requête ; les types de colonnes sont déduits des types produits par la requête.

    • Des clés de clustering peuvent être utilisées dans une instruction CTAS ; cependant, si des clés de clustering sont spécifiées, des définitions de colonnes sont requises et doivent être explicitement spécifiées dans l’instruction.

  • Dans une transaction, toute instruction DDL (y compris CREATE TEMPORARY/TRANSIENT TABLE) valide la transaction avant d’exécuter l’instruction DDL elle-même. L’instruction DDL s’exécute ensuite dans sa propre transaction. L’instruction suivante après l’instruction DDL démarre une nouvelle transaction. Par conséquent, vous ne pouvez pas créer, utiliser et supprimer une table temporaire ou transitoire dans une seule transaction. Si vous souhaitez utiliser une table temporaire ou transitoire dans une transaction, créez la table avant la transaction et supprimez la table après la transaction.

Exemples

Créer une table simple dans la base de données courante et insérer une ligne dans la table :

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

Créer une table simple et spécifier des commentaires pour la table et la colonne de la table :

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

Créer une table via une sélection à partir d’une table existante :

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

Exemple plus avancé de création d’une table en effectuant une sélection à partir d’une table existante ; dans cet exemple, les valeurs de la colonne summary_amount de la nouvelle table sont obtenues à partir de deux colonnes de la table source :

CREATE TABLE testtable-summary (name, summary_amount) AS SELECT name, amount1 + amount2 FROM testtable;

Créer une table en sélectionnant des colonnes à partir d’un fichier de données Parquet préparé :

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

Créer une table avec les mêmes définitions de colonnes qu’une autre table, mais sans lignes :

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

Créer une table avec une clé de clustering multi-colonnes :

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

Spécifier un classement des colonnes dans une table :

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');