CREATE ICEBERG TABLE¶
Crée une nouvelle table Iceberg dans le schéma actuel/spécifié ou remplace une table Iceberg existante. Les tables Iceberg combinent les fonctionnalités standards des tables Snowflake telles que le traitement SQL rapide, la sécurité et l’autorisation, ainsi que la gouvernance des données, avec les métadonnées et le stockage Apache Iceberg ouverts.
En outre, cette commande prend en charge les variantes suivantes pour les tables Iceberg qui utilisent Snowflake comme catalogue :
CREATE ICEBERGTABLE … AS SELECT (crée une table renseignée ; également appelé CTAS)
CREATE ICEBERGTABLE … LIKE (crée une copie vide d’une table existante)
Cette rubrique fait référence aux tables Iceberg en les appelant simplement « tables », sauf lorsque le fait de préciser tables Iceberg permet d’éviter toute confusion.
Note
Avant de créer une table, vous devez créer le volume externe dans lequel sont stockés les métadonnées et les fichiers de données Iceberg. Pour obtenir des instructions, voir Configurer un volume externe pour des tables Iceberg.
Si vous utilisez un catalogue Iceberg externe, ou si vous n’utilisez aucun catalogue, vous devez également créer une intégration de catalogue pour la table. Pour en savoir plus, voir Configurer une intégration de catalogue pour des tables Iceberg.
- Voir aussi :
ALTER ICEBERG TABLE, DROP ICEBERG TABLE , SHOW ICEBERG TABLES , DESCRIBE ICEBERG TABLE
Dans ce chapitre :
Syntaxe¶
Snowflake comme catalogue Iceberg¶
-- Snowflake as the Iceberg catalog
CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name> (
-- Column definition
<col_name> <col_type>
[ inlineConstraint ]
[ NOT NULL ]
[ COLLATE '<collation_specification>' ]
[ { DEFAULT <expr>
| { AUTOINCREMENT | IDENTITY }
[ { ( <start_num> , <step_num> )
| START <num> INCREMENT <num>
} ]
} ]
[ [ WITH ] MASKING POLICY <policy_name> [ USING ( <col_name> , <cond_col1> , ... ) ] ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
[ COMMENT '<string_literal>' ]
-- Additional column definitions
[ , <col_name> <col_type> [ ... ] ]
-- Out-of-line constraints
[ , outoflineConstraint [ ... ] ]
)
[ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ]
[ EXTERNAL_VOLUME = '<external_volume_name>' ]
[ CATALOG = 'SNOWFLAKE' ]
BASE_LOCATION = '<relative_path_from_external_volume>'
[ STAGE_FILE_FORMAT = (
{ FORMAT_NAME = '<file_format_name>'
| TYPE = { CSV | JSON | AVRO | ORC | PARQUET | XML } [ formatTypeOptions ]
} ) ]
[ STAGE_COPY_OPTIONS = ( copyOptions ) ]
[ DATA_RETENTION_TIME_IN_DAYS = <integer> ]
[ MAX_DATA_EXTENSION_TIME_IN_DAYS = <integer> ]
[ CHANGE_TRACKING = { TRUE | FALSE } ]
[ DEFAULT_DDL_COLLATION = '<collation_specification>' ]
[ COPY GRANTS ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col_name> [ , <col_name> ... ] ) ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
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>' PARSE_HEADER = TRUE | FALSE SKIP_HEADER = <integer> SKIP_BLANK_LINES = TRUE | FALSE DATE_FORMAT = '<string>' | AUTO TIME_FORMAT = '<string>' | AUTO TIMESTAMP_FORMAT = '<string>' | AUTO BINARY_FORMAT = HEX | BASE64 | UTF8 ESCAPE = '<character>' | NONE ESCAPE_UNENCLOSED_FIELD = '<character>' | NONE TRIM_SPACE = TRUE | FALSE FIELD_OPTIONALLY_ENCLOSED_BY = '<character>' | NONE NULL_IF = ( '<string>' [ , '<string>' ... ] ) ERROR_ON_COLUMN_COUNT_MISMATCH = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE EMPTY_FIELD_AS_NULL = TRUE | FALSE SKIP_BYTE_ORDER_MARK = TRUE | FALSE ENCODING = '<string>' | UTF8 -- If TYPE = JSON COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE DATE_FORMAT = '<string>' | AUTO TIME_FORMAT = '<string>' | AUTO TIMESTAMP_FORMAT = '<string>' | AUTO BINARY_FORMAT = HEX | BASE64 | UTF8 TRIM_SPACE = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) FILE_EXTENSION = '<string>' ENABLE_OCTAL = TRUE | FALSE ALLOW_DUPLICATE = TRUE | FALSE STRIP_OUTER_ARRAY = TRUE | FALSE STRIP_NULL_VALUES = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE IGNORE_UTF8_ERRORS = TRUE | FALSE SKIP_BYTE_ORDER_MARK = TRUE | FALSE -- If TYPE = AVRO COMPRESSION = AUTO | GZIP | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE TRIM_SPACE = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) -- If TYPE = ORC TRIM_SPACE = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) -- If TYPE = PARQUET COMPRESSION = AUTO | LZO | SNAPPY | NONE SNAPPY_COMPRESSION = TRUE | FALSE BINARY_AS_TEXT = TRUE | FALSE USE_LOGICAL_TYPE = TRUE | FALSE TRIM_SPACE = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE NULL_IF = ( '<string>' [ , '<string>' ... ] ) -- If TYPE = XML COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE IGNORE_UTF8_ERRORS = TRUE | FALSE PRESERVE_SPACE = TRUE | FALSE STRIP_OUTER_ELEMENT = TRUE | FALSE DISABLE_SNOWFLAKE_DATA = TRUE | FALSE DISABLE_AUTO_CONVERT = TRUE | FALSE REPLACE_INVALID_CHARACTERS = TRUE | FALSE SKIP_BYTE_ORDER_MARK = TRUE | FALSEcopyOptions ::= 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
Catalogue Iceberg externe¶
-- External Iceberg catalog
CREATE [ OR REPLACE ] ICEBERG TABLE [ IF NOT EXISTS ] <table_name>
[ EXTERNAL_VOLUME = '<external_volume_name>' ]
[ CATALOG = '<catalog_integration_name>' ]
externalCatalogParams
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Où :
externalCatalogParams (for AWS Glue Data Catalog) ::= CATALOG_TABLE_NAME = '<catalog_table_name>' [ CATALOG_NAMESPACE = '<catalog_namespace>' ]externalCatalogParams (for Iceberg files in object storage) ::= METADATA_FILE_PATH = '<metadata_file_path>'
Syntaxe des variantes¶
La syntaxe des variantes suivante est prise en charge pour la création de tables Iceberg qui utilisent Snowflake comme catalogue.
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 ] ICEBERG TABLE <table_name> [ ( <col_name> [ <col_type> ] , <col_name> [ <col_type> ] , ... ) ] [ CLUSTER BY ( <expr> [ , <expr> , ... ] ) ] [ COPY GRANTS ] AS SELECT <query> [ ... ]
Une politique de masquage peut être appliquée à une colonne dans une instruction CTAS. Spécifiez la politique de masquage après le type de données de la colonne. De même, une politique d’accès aux lignes peut être appliquée à la table. Par exemple :
CREATE ICEBERG TABLE <table_name> ( <col1> <data_type> [ WITH ] MASKING POLICY <policy_name> [ , ... ] ) ... [ WITH ] ROW ACCESS POLICY <policy_name> ON ( <col1> [ , ... ] ) 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 privilèges de la table remplacée par CREATE OR REPLACE (si elle existe déjà), et non de la ou 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 ICEBERG 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 ] ICEBERG 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.
Note
CREATE TABLE … LIKE pour une table avec une séquence d’auto-incrémentation à laquelle on accède par un partage de données est actuellement non pris en charge.
Paramètres requis¶
table_name
Indique l’identificateur (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 (par exemple,
"My object"
). Les identificateurs entre guillemets doubles sont également sensibles à la casse.Pour plus de détails, voir Exigences relatives à l’identificateur.
col_name
Indique l’identificateur (le nom) de colonne. 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.
col_type
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 des tables Iceberg.
query
Sous-requête qui appelle la fonction INFER_SCHEMA et formate la sortie sous forme de tableau.
Paramètres facultatifs¶
EXTERNAL_VOLUME = 'external_volume_name'
Spécifie l’identificateur (le nom) du volume externe dans lequel la table Iceberg stocke ses fichiers de métadonnées et ses données au format Parquet. Les métadonnées et les fichiers manifestes Iceberg stockent le schéma de la table, les partitions, les instantanés et d’autres métadonnées.
Si vous ne spécifiez pas ce paramètre, la table Iceberg utilise par défaut le volume externe du schéma, de la base de données ou du compte. Le schéma est prioritaire sur la base de données, et la base de données est prioritaire sur le compte.
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.
COLLATE 'collation_specification'
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.
Référence de séquence (
seq_name.NEXTVAL
).Expression simple qui renvoie une valeur scalaire.
L’expression simple peut inclure une UDF (fonction définie par l’utilisateur) SQL si l’UDF n’est pas une UDF sécurisée.
Note
Si une expression par défaut fait référence à une UDF SQL, 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 ne mettra pas à jour l’expression par défaut de la colonne.
L’expression simple ne peut pas contenir des références à :
Sous-requêtes.
Agrégats.
Des fonctions de fenêtre.
Des UDFs sécurisées.
Des UDFs écrites dans des langages autres que SQL (par exemple, Java, JavaScript).
Fonctions externes.
- {
AUTOINCREMENT
|IDENTITY
} [ {( start_num , step_num )
|START num INCREMENT num
} ] AUTOINCREMENT
etIDENTITY
sont synonymes. Lorsque l’un ou l’autre 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.Prudence
Snowflake utilise une séquence pour générer les valeurs d’une colonne auto-incrémentée. Les séquences ont des limites ; voir Sémantique de séquence.
La valeur par défaut pour le démarrage et les paliers/incréments est de
1
.AUTOINCREMENT
etIDENTITY
ne peuvent être utilisés que pour les colonnes dont le type de données est numérique.
Par défaut : aucune valeur (la colonne n’a pas de valeur par défaut)
Note
DEFAULT
etAUTOINCREMENT
s’excluent mutuellement ; une seule des deux peut être spécifiée pour une colonne.MASKING POLICY = policy_name
Spécifie la politique de masquage à définir sur une colonne.
COMMENT 'string_literal'
Spécifie un commentaire pour la colonne.
(Notez que les commentaires peuvent être spécifiés au niveau de la colonne ou de la table. La syntaxe de chacun est légèrement différente).
USING ( col_name , cond_col_1 ... )
Spécifie les arguments à passer dans l’expression SQL de la politique de masquage conditionnelle.
La première colonne de la liste spécifie la colonne pour les conditions de la politique de masquage ou de tokenisation des données et doit correspondre à la colonne à laquelle la politique de masquage est définie.
Les colonnes supplémentaires spécifient les colonnes à évaluer pour déterminer s’il faut masquer ou tokeniser les données de chaque ligne du résultat de la requête lorsqu’une requête est effectuée sur la première colonne.
Si la clause USING est omise, Snowflake traite la politique de masquage conditionnelle comme une politique de masquage normale.
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, vous devez comprendre ce que sont les micro-partitions. Pour plus d’informations, voir Fonctionnement des structures de table dans Snowflake.
STAGE_FILE_FORMAT = ( FORMAT_NAME = 'file_format_name' )
ou .STAGE_FILE_FORMAT = ( TYPE = CSV | JSON | AVRO | ORC | PARQUET | XML [ ... ] )
Spécifie le format de fichier par défaut de la table (pour le chargement et le déchargement des données), qui peut être, au choix :
FORMAT_NAME = file_format_name
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 cette rubrique).
Par défaut :
TYPE = CSV
Note
FORMAT_NAME
etTYPE
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 cette rubrique).
DATA_RETENTION_TIME_IN_DAYS = integer
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
ou1
Édition Enterprise :
0
à90
pour les tables permanentes0
ou1
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.MAX_DATA_EXTENSION_TIME_IN_DAYS = integer
Paramètre d’objet qui spécifie le nombre maximum de jours pendant lesquels Snowflake peut prolonger la période de conservation des données de la table, afin d’éviter que les flux sur la table ne deviennent obsolètes.
Pour une description détaillée de ce paramètre, voir MAX_DATA_EXTENSION_TIME_IN_DAYS.
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 = 'collation_specification'
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 ICEBERG 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 :
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 ICEBERG 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 ICEBERG TABLE (c’est-à-dire dans la même transaction).
COMMENT = 'string_literal'
Spécifie un commentaire pour la table.
Par défaut : aucune valeur
(Notez que les commentaires peuvent être spécifiés au niveau de la colonne ou de la table. La syntaxe de chacun est légèrement différente).
ROW ACCESS POLICY policy_name ON ( col_name [ , col_name ... ] )
Spécifie la politique d’accès aux lignes à définir sur une table.
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )
Spécifie le nom de la balise et la valeur de la chaîne de la balise.
La valeur de la balise est toujours une chaîne de caractères et le nombre maximum de caractères pour la valeur de la balise est 256.
Pour plus de détails sur la spécification des balises dans une instruction, voir Quotas de balises pour les objets et les colonnes.
Paramètres du catalogue Snowflake¶
CATALOG = 'SNOWFLAKE'
Spécifie Snowflake comme catalogue Iceberg. Snowflake prend en charge la maintenance tout au long du cycle de vie de la table, comme le compactage.
BASE_LOCATION = 'relative_path_from_external_volume'
Spécifie un chemin d’accès relatif au répertoire à partir de l’emplacement du
EXTERNAL_VOLUME
de la table auquel Snowflake peut écrire les données et les métadonnées de la table.Ce paramètre ne peut pas être modifié après la création d’une table.
Paramètres de catalogue externe (externalCatalogParams)¶
CATALOG = 'catalog_integration_name'
Spécifie l’identificateur (le nom) de l’intégration de catalogue de cette table.
Si cette valeur n’est pas spécifiée, la table Iceberg utilise par défaut l’intégration de catalogue du schéma, de la base de données ou du compte. Le schéma est prioritaire sur la base de données, et la base de données est prioritaire sur le compte.
AWS Glue
CATALOG_TABLE_NAME = 'catalog_table_name'
Spécifie le nom de table tel qu’il est reconnu par votre catalogue de données AWS Glue. Pour un exemple d’utilisation de
CATALOG_TABLE_NAME
lors de la création d’une table Iceberg, voir Exemples (dans cette rubrique). Ce paramètre ne peut pas être modifié après la création de la table.CATALOG_NAMESPACE = 'catalog_namespace'
Spécifie éventuellement l’espace de noms (par exemple,
my_glue_database
) de la source du catalogue de données AWS Glue et remplace l’espace de noms de catalogue par défaut spécifié avec l’intégration de catalogue. En spécifiant un espace de noms au niveau de la table, vous pouvez utiliser une seule intégration de catalogue pour AWS Glue pour créer des tables Iceberg dans différentes bases de données.Si cette valeur n’est pas spécifiée, la table utilise l’espace de noms de catalogue par défaut associé à l’intégration de catalogue.
Fichiers Iceberg dans le stockage d’objets
METADATA_FILE_PATH = 'metadata_file_path'
Spécifie le chemin d’accès relatif au fichier de métadonnées Iceberg à utiliser pour les définitions de colonne. Par exemple, si
s3://mybucket_us_east_1/metadata/v1.metadata.json
est le chemin complet à votre fichier de métadonnées et si l’emplacement de stockage du volume externe ests3://mybucket_us_east_1/
, indiquezmetadata/v1.metadata.json
comme valeur pourMETADATA_FILE_PATH
.Avant la version 7.34 de Snowflake, ce paramètre était appelé
METADATA_FILE_NAME
.
Note
Avant la version 7.34 de Snowflake, un paramètre nommé BASE_LOCATION
(également appelé FILE_PATH
dans les versions précédentes) était nécessaire pour créer une table à partir de fichiers Iceberg dans le stockage d’objets. Le paramètre spécifiait un chemin d’accès relatif à partir de l’emplacement du EXTERNAL_VOLUME
de la table. Avec les versions 7.34 et ultérieures de Snowflake, vous n’indiquez pas d”BASE_LOCATION
pour créer une table à partir de fichiers Iceberg dans le stockage d’objets.
Vous pouvez continuer à exécuter un script ou une instruction qui utilise la version antérieure de la syntaxe CREATE ICEBERG TABLE. Cependant, cela affecte la valeur que vous spécifiez comme metadata-file-relative-path
lorsque vous actualisez la table. Pour plus d’informations, voir ALTER ICEBERG TABLE … REFRESH.
Options de type de format (formatTypeOptions
)¶
Les options de type de format sont utilisées pour charger des données dans et décharger des données de 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 de données, déchargement de données et tables externes
- 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 = 'character' | NONE
- Utilisation
Chargement de données, déchargement de données et tables externes
- 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 ou les caractères à un octet ou à plusieurs octets suivants :
- Caractères à un octet
Valeurs octales (préfixées par
\\
) ou les valeurs hexadécimales (préfixées par\x
ou0x
). Par exemple, pour les enregistrements délimités par le caractère accent circonflexe (^
), spécifiez la valeur octale (\\136
) ou hexadécimale (0x5e
).- Caractères multi-octets
Valeurs hexagonales (préfixées par
\x
). Par exemple, pour les enregistrements délimités par le caractère cent (¢
), spécifiez la valeur hexadécimale (\xC2\xA2
).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 spécifié doit être un caractère UTF-8 valide et non une séquence aléatoire d’octets. Notez également que le délimiteur est limité à un maximum de 20 caractères.
Accepte également une valeur de
NONE
.- 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 = 'character' | NONE
- Utilisation
Chargement de données, déchargement de données et tables externes
- 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 ou les caractères à un octet ou à plusieurs octets suivants :
- Caractères à un octet
Valeurs octales (préfixées par
\\
) ou les valeurs hexadécimales (préfixées par\x
ou0x
). Par exemple, pour les enregistrements délimités par le caractère accent circonflexe (^
), spécifiez la valeur octale (\\136
) ou hexadécimale (0x5e
).- Caractères multi-octets
Valeurs hexagonales (préfixées par
\x
). Par exemple, pour les enregistrements délimités par le caractère cent (¢
), spécifiez la valeur hexadécimale (\xC2\xA2
).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'
).Note
Pour les caractères autres que ASCII, vous devez utiliser la valeur de la séquence d’octets hexagonale pour obtenir un comportement déterministe.
Le délimiteur spécifié doit être un caractère UTF-8 valide et non une séquence aléatoire d’octets. Notez également que le délimiteur est limité à un maximum de 20 caractères.
Accepte également une valeur de
NONE
.- Par défaut
virgule (
,
)
FILE_EXTENSION = 'string' | 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, siCOMPRESSION
est défini.
Note
Si l’option de copie
SINGLE
estTRUE
, 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 chemininternal_location
ouexternal_location
(par ex.copy into @stage/data.csv
).PARSE_HEADER = TRUE | FALSE
- Utilisation
Chargement des données uniquement
- Définition
Booléen qui spécifie s’il faut utiliser les en-têtes de la première ligne des fichiers de données pour déterminer les noms des colonnes.
Cette option de format de fichier s’applique uniquement aux actions suivantes :
Détection automatique des définitions de colonnes à l’aide de la fonction INFER_SCHEMA.
Chargement de données CSV dans des colonnes séparées en utilisant la fonction INFER_SCHEMA et l’option de copie MATCH_BY_COLUMN_NAME.
Si l’option est définie sur TRUE, les en-têtes de la première ligne seront utilisés pour déterminer les noms des colonnes. La valeur par défaut FALSE renvoie les noms de colonnes sous la forme c , où est la position de la colonne.
Notez que l’option SKIP_HEADER n’est pas prise en charge avec PARSE_HEADER = TRUE.
Par défaut :
FALSE
SKIP_HEADER = integer
- Utilisation
Chargement de données et tables externes
- 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 de données et tables externes
- 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 = 'string' | 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 = 'string' | 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 = string' | 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 = 'character' | NONE
- Utilisation
Chargement et déchargement des données
- Définition
Chaîne de caractères à un octet utilisée comme caractère d’échappement pour les valeurs de champs délimitées ou non délimitées. 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 du caractère
FIELD_OPTIONALLY_ENCLOSED_BY
ou dans les données comme des littéraux.Accepte les séquences d’échappement, les valeurs octales ou les valeurs hexadécimales courantes.
- Chargement des données
Spécifie le caractère d’échappement pour les champs délimités uniquement. Spécifiez le caractère utilisé pour délimiter les champs en définissant
FIELD_OPTIONALLY_ENCLOSED_BY
.Note
Cette option de format de fichier ne prend en charge que les caractères à un seul octet. Notez que le codage des caractères UTF-8 représente les caractères ASCII d’ordre supérieur comme des caractères à plusieurs octets. Si votre fichier de données est codé avec le jeu de caractères UTF-8, vous ne pouvez pas spécifier un caractère ASCII d’ordre supérieur comme valeur d’option.
En outre, si vous spécifiez un caractère ASCII d’ordre élevé, nous vous recommandons de définir l’option de format de fichier
ENCODING = 'string'
comme codage de caractères pour vos fichiers de données afin de garantir la bonne interprétation du caractère.- 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 = 'character' | NONE
- Utilisation
Chargement de données, déchargement de données et tables externes
- Définition
Chaîne de caractères à un octet 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
ouRECORD_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.
- Chargement des données
Spécifie le caractère d’échappement pour les champs non délimités uniquement.
Note
La valeur par défaut est
\\
. Si une ligne d’un fichier de données se termine par une barre oblique inverse (\
), ce caractère échappe le caractère de nouvelle ligne ou de retour chariot spécifié pour l’option de format de fichierRECORD_DELIMITER
. Par conséquent, l’opération de chargement considère cette ligne et la suivante comme une seule ligne de données. Pour éviter ce problème, définissez la valeur surNONE
.Cette option de format de fichier ne prend en charge que les caractères à un seul octet. Notez que le codage des caractères UTF-8 représente les caractères ASCII d’ordre supérieur comme des caractères à plusieurs octets. Si votre fichier de données est codé avec le jeu de caractères UTF-8, vous ne pouvez pas spécifier un caractère ASCII d’ordre supérieur comme valeur d’option.
En outre, si vous spécifiez un caractère ASCII d’ordre élevé, nous vous recommandons de définir l’option de format de fichier
ENCODING = 'string'
comme codage de caractères pour vos fichiers de données afin de garantir la bonne interprétation du caractère.
- 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 de données et tables externes
- 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 queFIELD_DELIMITER = '|'
etFIELD_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 = 'character' | NONE
- Utilisation
Chargement de données, déchargement de données et tables externes
- 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 = ( 'string1' [ , 'string2' , ... ] )
- Utilisation
Chargement de données, déchargement de données et tables externes
- Définition
Chaîne utilisée pour les conversions entrante et sortante de SQL NULL :
Lors du chargement des données, Snowflake remplace ces valeurs 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.
Notez que Snowflake convertit toutes les instances de la valeur en NULL, quel que soit le type de données. Par exemple, si
2
est spécifié comme valeur, toutes les instances de2
sous forme de chaîne ou de nombre sont converties.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 valeurESCAPE_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.Si
FALSE
est défini, 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
EMPTY_FIELD_AS_NULL = TRUE | FALSE
- Utilisation
Chargement de données, déchargement de données et tables externes
- 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
. LorsqueFIELD_OPTIONALLY_ENCLOSED_BY = NONE
, le paramètreEMPTY_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 = 'string'
- Utilisation
Chargement de données et tables externes
- 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
IBM949
IBM949
Coréen
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
ISO-8859-15
ISO885915
Allemand, anglais, danois, français, italien, norvégien, néerlandais, portugais, suédois
Identique à ISO-8859-1 à l’exception des 8 caractères, y compris le symbole monétaire Euro.
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-949
WINDOWS949
Coréen
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.
TYPE = JSON¶
COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- Utilisation
Chargement de données et tables externes
- 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 = 'string' | AUTO
- Utilisation
Chargement des données uniquement
- Définition
Définit le format des valeurs de chaîne 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 s’applique uniquement aux actions suivantes :
Chargement des données JSON dans des colonnes séparées en utilisant l’option de copie MATCH_BY_COLUMN_NAME.
Chargement des données JSON dans des colonnes distinctes en spécifiant une requête dans l’instruction COPY (c’est-à-dire une transformation COPY).
- Par défaut
AUTO
TIME_FORMAT = 'string' | AUTO
- Utilisation
Chargement des données uniquement
- Définition
Définit le format des valeurs de la chaîne de temps 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 s’applique uniquement aux actions suivantes :
Chargement des données JSON dans des colonnes séparées en utilisant l’option de copie MATCH_BY_COLUMN_NAME.
Chargement des données JSON dans des colonnes distinctes en spécifiant une requête dans l’instruction COPY (c’est-à-dire une transformation COPY).
- Par défaut
AUTO
TIMESTAMP_FORMAT = string' | AUTO
- Utilisation
Chargement des données uniquement
- Définition
Définit le format des valeurs de chaîne 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 s’applique uniquement aux actions suivantes :
Chargement des données JSON dans des colonnes séparées en utilisant l’option de copie MATCH_BY_COLUMN_NAME.
Chargement des données JSON dans des colonnes distinctes en spécifiant une requête dans l’instruction COPY (c’est-à-dire une transformation COPY).
- Par défaut
AUTO
BINARY_FORMAT = HEX | BASE64 | UTF8
- Utilisation
Chargement des données uniquement
- Définition
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 s’applique uniquement aux actions suivantes :
Chargement des données JSON dans des colonnes séparées en utilisant l’option de copie MATCH_BY_COLUMN_NAME.
Chargement des données JSON dans des colonnes distinctes en spécifiant une requête dans l’instruction COPY (c’est-à-dire une transformation COPY).
- Par défaut
HEX
TRIM_SPACE = TRUE | FALSE
- Utilisation
Chargement des données uniquement
- Définition
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 appliquée aux actions suivantes uniquement lors du chargement de données JSON dans des colonnes séparées à l’aide de l’option de copie MATCH_BY_COLUMN_NAME.
- Par défaut
FALSE
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- Utilisation
Chargement des données uniquement
- Définition
Chaîne utilisée pour les conversions entrante et sortante de 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.
Cette option de format de fichier est appliquée aux actions suivantes uniquement lors du chargement de données JSON dans des colonnes séparées à l’aide de l’option de copie MATCH_BY_COLUMN_NAME.
Notez que Snowflake convertit toutes les instances de la valeur en NULL, quel que soit le type de données. Par exemple, si
2
est spécifié comme valeur, toutes les instances de2
sous forme de chaîne ou de nombre sont converties.Par exemple :
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Notez que cette option peut inclure des chaînes vides.
- Par défaut
\\N
(c.-à-d. NULL, qui suppose que la valeurESCAPE_UNENCLOSED_FIELD
est\\
)
FILE_EXTENSION = 'string' | 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, siCOMPRESSION
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 de données et tables externes
- 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 de données et tables externes
- 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 de données et tables externes
- 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 surTRUE
: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
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- Utilisation
Chargement de données et table externe
- 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 (
�
). Cette option permet de remplacer un caractère par un autre.- Valeurs
S’il est défini sur
TRUE
, Snowflake remplace les caractères UTF-8 non valides par le caractère de remplacement Unicode.Si
FALSE
est défini, 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
IGNORE_UTF8_ERRORS = TRUE | FALSE
- Utilisation
Chargement de données et table externe
- Définition
Booléen qui spécifie si les erreurs d’encodage UTF-8 produisent des conditions d’erreur. Il s’agit d’une syntaxe alternative pour
REPLACE_INVALID_CHARACTERS
.- Valeurs
Si ce paramètre est réglé sur
TRUE
, toute séquence UTF-8 non valide est remplacée discrètement par le caractère UnicodeU+FFFD
(c.-à-d. un « caractère de remplacement »).Si
FALSE
est défini, 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
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 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- Utilisation
Chargement des données uniquement
- 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
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
.
Note
Nous vous recommandons d’utiliser l’option par défaut AUTO
car elle déterminera à la fois la compression du fichier et celle du codec. La spécification d’une option de compression fait référence à la compression de fichiers, et non à la compression de blocs (codecs).
TRIM_SPACE = TRUE | FALSE
- Utilisation
Chargement des données uniquement
- Définition
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 appliquée aux actions suivantes uniquement lors du chargement de données Avro dans des colonnes séparées à l’aide de l’option de copie MATCH_BY_COLUMN_NAME.
- Par défaut
FALSE
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- Utilisation
Chargement de données et table externe
- 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 (
�
). Cette option permet de remplacer un caractère par un autre.- Valeurs
S’il est défini sur
TRUE
, Snowflake remplace les caractères UTF-8 non valides par le caractère de remplacement Unicode.Si
FALSE
est défini, 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
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- Utilisation
Chargement des données uniquement
- Définition
Chaîne utilisée pour les conversions entrante et sortante de 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.
Cette option de format de fichier est appliquée aux actions suivantes uniquement lors du chargement de données Avro dans des colonnes séparées à l’aide de l’option de copie MATCH_BY_COLUMN_NAME.
Notez que Snowflake convertit toutes les instances de la valeur en NULL, quel que soit le type de données. Par exemple, si
2
est spécifié comme valeur, toutes les instances de2
sous forme de chaîne ou de nombre sont converties.Par exemple :
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Notez que cette option peut inclure des chaînes vides.
- Par défaut
\\N
(c.-à-d. NULL, qui suppose que la valeurESCAPE_UNENCLOSED_FIELD
est\\
)
TYPE = ORC¶
TRIM_SPACE = TRUE | FALSE
- Utilisation
Chargement de données et tables externes
- Définition
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 appliquée aux actions suivantes uniquement lors du chargement des données Orc dans des colonnes séparées à l’aide de l’option de copie MATCH_BY_COLUMN_NAME.
- Par défaut
FALSE
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- Utilisation
Chargement de données et table externe
- 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 (
�
). Cette option permet de remplacer un caractère par un autre.- Valeurs
S’il est défini sur
TRUE
, Snowflake remplace les caractères UTF-8 non valides par le caractère de remplacement Unicode.Si
FALSE
est défini, 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
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- Utilisation
Chargement de données et tables externes
- Définition
Chaîne utilisée pour les conversions entrante et sortante de 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.
Cette option de format de fichier est appliquée aux actions suivantes uniquement lors du chargement des données Orc dans des colonnes séparées à l’aide de l’option de copie MATCH_BY_COLUMN_NAME.
Notez que Snowflake convertit toutes les instances de la valeur en NULL, quel que soit le type de données. Par exemple, si
2
est spécifié comme valeur, toutes les instances de2
sous forme de chaîne ou de nombre sont converties.Par exemple :
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Notez que cette option peut inclure des chaînes vides.
- Par défaut
\\N
(c.-à-d. NULL, qui suppose que la valeurESCAPE_UNENCLOSED_FIELD
est\\
)
TYPE = PARQUET¶
COMPRESSION = AUTO | LZO | SNAPPY | NONE
- Utilisation
Chargement de données, déchargement de données et tables externes
- 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
Valeurs prises en charge
Remarques
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é si vous déchargez des fichiers compressés avec 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 de données et tables externes
- 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.- Par défaut
TRUE
Note
Snowflake vous recommande de définir BINARY_AS_TEXT sur FALSE pour éviter tout problème de conversion éventuel.
TRIM_SPACE = TRUE | FALSE
- Utilisation
Chargement des données uniquement
- Définition
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 appliquée aux actions suivantes uniquement lors du chargement de données Parquet dans des colonnes séparées à l’aide de l’option de copie MATCH_BY_COLUMN_NAME.
- Par défaut
FALSE
USE_LOGICAL_TYPE = TRUE | FALSE
- Utilisation
Chargement de données, interrogation de données dans des fichiers en zone de préparation et détection de schémas.
- Définition
Booléen qui spécifie s’il faut utiliser les types logiques Parquet. Avec cette option de format de fichier, Snowflake peut interpréter les types logiques Parquet lors du chargement des données. Pour plus d’informations, consultez Définitions de types logiques Parquet. Pour activer les types logiques Parquet, définissez USE_LOGICAL_TYPE sur TRUE lorsque vous créez une nouvelle option de format de fichier.
- Limites
Non pris en charge pour le déchargement de données.
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- Utilisation
Chargement de données et table externe
- 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 (
�
). Cette option permet de remplacer un caractère par un autre.- Valeurs
S’il est défini sur
TRUE
, Snowflake remplace les caractères UTF-8 non valides par le caractère de remplacement Unicode.Si
FALSE
est défini, 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
NULL_IF = ( 'string1' [ , 'string2' , ... ] )
- Utilisation
Chargement des données uniquement
- Définition
Chaîne utilisée pour les conversions entrante et sortante de 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.
Cette option de format de fichier est appliquée aux actions suivantes uniquement lors du chargement de données Parquet dans des colonnes séparées à l’aide de l’option de copie MATCH_BY_COLUMN_NAME.
Notez que Snowflake convertit toutes les instances de la valeur en NULL, quel que soit le type de données. Par exemple, si
2
est spécifié comme valeur, toutes les instances de2
sous forme de chaîne ou de nombre sont converties.Par exemple :
NULL_IF = ('\\N', 'NULL', 'NUL', '')
Notez que cette option peut inclure des chaînes vides.
- Par défaut
\\N
(c.-à-d. NULL, qui suppose que la valeurESCAPE_UNENCLOSED_FIELD
est\\
)
TYPE = XML¶
COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
- Utilisation
Chargement des données uniquement
- 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 de données et table externe
- Définition
Booléen qui spécifie si les erreurs d’encodage UTF-8 produisent des conditions d’erreur. Il s’agit d’une syntaxe alternative pour
REPLACE_INVALID_CHARACTERS
.- Valeurs
Si ce paramètre est réglé sur
TRUE
, toute séquence UTF-8 non valide est remplacée discrètement par le caractère UnicodeU+FFFD
(c.-à-d. un « caractère de remplacement »).Si
FALSE
est défini, 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
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
REPLACE_INVALID_CHARACTERS = TRUE | FALSE
- Utilisation
Chargement de données et table externe
- 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 (
�
). Cette option permet de remplacer un caractère par un autre.- Valeurs
S’il est défini sur
TRUE
, Snowflake remplace les caractères UTF-8 non valides par le caractère de remplacement Unicode.Si
FALSE
est défini, 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
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
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_num | 'SKIP_FILE_num%' | ABORT_STATEMENT
- Utilisation
Chargement des données uniquement
- Définition
Chaîne (constante) qui spécifie le traitement des erreurs pour l’opération de chargement.
Important
Examinez attentivement la valeur de l’option de copie ON_ERROR. La valeur par défaut est appropriée dans les scénarios courants, mais n’est pas toujours la meilleure option.
- Valeurs
CONTINUE
Continuer à charger le fichier si des erreurs sont trouvées. L’instruction COPY renvoie un message d’erreur pour un maximum d’une erreur trouvé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 voir toutes les erreurs dans les fichiers de données, utilisez le paramètre VALIDATION_MODE ou interrogez la fonction VALIDATE.
SKIP_FILE
Ignorez un fichier lorsqu’une erreur est trouvée.
Notez que l’action
SKIP_FILE
met en mémoire tampon un fichier entier, que des erreurs soient trouvées ou non. Pour cette raison,SKIP_FILE
est plus lent queCONTINUE
ouABORT_STATEMENT
. Ignorer des fichiers volumineux en raison d’un petit nombre d’erreurs pourrait entraîner des retards et des crédits gaspillés. Lorsque vous chargez un grand nombre d’enregistrements à partir de fichiers qui n’ont pas de délimitation logique (par exemple, les fichiers ont été générés automatiquement à des intervalles approximatifs), envisagez de spécifierCONTINUE
à la place.Modèles complémentaires :
SKIP_FILE_num
(par ex.SKIP_FILE_10
)Ignorez le fichier lorsque le nombre de lignes d’erreurs trouvées dans le fichier est égal ou supérieur au nombre spécifié.
'SKIP_FILE_num%'
(par ex.'SKIP_FILE_10%'
)Ignorez un fichier lorsque le pourcentage de lignes d’erreurs trouvées dans le fichier dépasse le pourcentage spécifié.
ABORT_STATEMENT
Abandonnez l’opération de chargement si une erreur est trouvée dans un fichier de données.
Notez que l’opération de chargement n’est pas abandonnée si le fichier de données est introuvable (par exemple, parce qu’il n’existe pas ou n’est pas accessible), sauf lorsque les fichiers de données explicitement spécifiés dans le paramètre
FILES
sont introuvables.- Par défaut
- Chargement en lot à l’aide de COPY
ABORT_STATEMENT
- Snowpipe
SKIP_FILE
SIZE_LIMIT = num
- Utilisation
Chargement des données uniquement
- Définition
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 seuilSIZE_LIMIT
.Notez qu’au moins un fichier est chargé, quelle que soit la valeur spécifiée pour
SIZE_LIMIT
à moins qu’il n’y ait aucun fichier à charger.- Par défaut
null (aucune limite de taille)
PURGE = TRUE | FALSE
- Utilisation
Chargement des données uniquement
- Définition
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
- Utilisation
Chargement des données uniquement
- Définition
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
- Utilisation
Chargement des données uniquement
- Définition
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.
Cette option de copie est prise en charge pour les formats de données suivants :
JSON
Avro
ORC
Parquet
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.
- Valeurs
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.
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
ouCASE_INSENSITIVE
, une valeur de colonne vide (par exemple"col1": ""
) génère une erreur.
- Par défaut
NONE
ENFORCE_LENGTH = TRUE | FALSE
- Utilisation
Chargement des données uniquement
- Définition
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.Cette option de copie prend en charge les données CSV, ainsi que les valeurs de chaîne dans les données semi-structurées lorsqu’elles sont chargées dans des colonnes séparées dans des tables relationnelles.
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é.
- Par défaut
TRUE
TRUNCATECOLUMNS = TRUE | FALSE
- Utilisation
Chargement des données uniquement
- Définition
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.Cette option de copie prend en charge les données CSV, ainsi que les valeurs de chaîne dans les données semi-structurées lorsqu’elles sont chargées dans des colonnes séparées dans des tables relationnelles.
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é.- Par défaut
FALSE
FORCE = TRUE | FALSE
- Utilisation
Chargement des données uniquement
- Définition
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
Exigences en matière de contrôle d’accès¶
Un rôle utilisé pour exécuter cette commande SQL doit avoir les privilèges suivants définis au minimum ainsi :
Privilège |
Objet |
Remarques |
---|---|---|
CREATE ICEBERG TABLE |
Schéma |
|
CREATE EXTERNAL VOLUME |
Compte |
Nécessaire pour créer un nouveau volume externe. |
USAGE |
Volume externe |
Nécessaire pour référencer un volume externe existant. |
CREATE INTEGRATION |
Compte |
Nécessaire pour créer une nouvelle intégration de catalogue. |
USAGE |
Intégration de catalogue |
Nécessaire pour référencer une intégration de catalogue existante. |
Notez que l’exploitation d’un objet dans un schéma requiert également le privilège USAGE sur la base de données et le schéma parents.
Pour obtenir des instructions sur la création d’un rôle personnalisé avec un ensemble spécifique de privilèges, voir Création de rôles personnalisés.
Pour des informations générales sur les rôles et les privilèges accordés pour effectuer des actions SQL sur des objets sécurisables, voir Aperçu du contrôle d’accès.
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.
Les instructions CREATE OR REPLACE <objet> sont atomiques. En d’autres termes, lorsqu’un objet est remplacé, l’ancien objet est supprimé et le nouvel objet est créé dans une seule transaction.
Cela signifie que toutes les requêtes simultanées à l’opération CREATE OR REPLACE ICEBERG TABLE utilisent soit l’ancienne soit la nouvelle version de la table.
Comme les mots clés réservés, les noms de fonctions réservés ANSI (CURRENT_DATE, CURRENT_TIMESTAMP, etc.) ne peuvent pas être utilisés comme noms de colonnes.
La recréation d’une table (en utilisant le mot clé
OR REPLACE
facultatif) détruit son historique, ce qui rend tout flux sur la table périmé. Un flux périmé est illisible.Les tables Iceberg inter-Cloud et interrégionales ne sont actuellement pas prises en charge lorsque vous utilisez Snowflake comme catalogue Iceberg. Si CREATE ICEBERG TABLE renvoie un message d’erreur tel que
"External volume <nom_du_volume> must have a STORAGE_LOCATION defined in the local region ..."
, assurez-vous que votre volume externe utilise un emplacement de stockage dans la même région que celle de votre compte Snowflake.Si vous avez créé votre volume externe ou votre intégration de catalogue à l’aide d’un identificateur entre guillemets doubles, vous devez spécifier l’identificateur exactement tel qu’il a été créé (y compris les guillemets doubles) dans votre instruction CREATE ICEBERG TABLE. Le fait de ne pas inclure de guillemets peut entraîner une erreur
Object does not exist
(ou un type d’erreur similaire).Pour un exemple, voir la section Exemples (dans cette rubrique).
Avant la version 7.34 de Snowflake, un paramètre nommé
BASE_LOCATION
(également appeléFILE_PATH
dans les versions précédentes) était nécessaire pour créer une table à partir de fichiers Iceberg dans le stockage d’objets. Le paramètre spécifiait un chemin d’accès relatif à partir de l’emplacement duEXTERNAL_VOLUME
de la table. Avec les versions 7.34 et ultérieures de Snowflake, vous n’indiquez pas d”BASE_LOCATION
pour créer une table à partir de fichiers Iceberg dans le stockage d’objets.Vous pouvez continuer à exécuter un script ou une instruction qui utilise la version antérieure de la syntaxe CREATE ICEBERG TABLE. Cependant, cela affecte la valeur que vous spécifiez comme
metadata-file-relative-path
lorsque vous actualisez la table. Pour plus d’informations, voir ALTER ICEBERG TABLE … REFRESH.CREATE TABLE … LIKE :
Si la table source a des clés de clustering, la nouvelle table a elle aussi des clés de clustering. Par défaut, le clustering automatique n’est pas suspendu pour la nouvelle table, même si le clustering automatique a été suspendu pour la table source.
CREATE TABLE … AS SELECT (CTAS):
Lorsque les clés de clustering sont spécifiées dans une instruction CTAS :
Les définitions des colonnes sont obligatoires et doivent être explicitement spécifiées dans l’instruction.
Par défaut, le clustering automatique n’est pas suspendu pour la nouvelle table, même si le clustering automatique est suspendu pour la table source.
La sous-clause ORDER BY d’une instruction CREATE TABLE n’affecte pas l’ordre des lignes retournées par les futures instructions SELECT sur cette table. Pour spécifier l’ordre des lignes dans les futures instructions SELECT, utilisez une sous-clause ORDER BY dans ces instructions.
Concernant les métadonnées :
Attention
Les clients doivent s’assurer qu’aucune donnée personnelle (autre que pour un objet utilisateur), donnée sensible, donnée à exportation contrôlée ou autre donnée réglementée n’est saisie comme métadonnée lors de l’utilisation du service Snowflake. Pour plus d’informations, voir Champs de métadonnées dans Snowflake.
Exemples¶
Créer une table Iceberg avec Snowflake comme catalogue
Cet exemple crée une table Iceberg avec Snowflake comme catalogue Iceberg. La table obtenue est gérée par Snowflake et prend en charge l’accès en lecture et en écriture. L’instruction spécifie une valeur pour le paramètre BASE_LOCATION
. Cela indique à Snowflake où écrire les données et métadonnées de la table dans le volume externe.
CREATE ICEBERG TABLE myTable (amount NUMBER)
CATALOG='SNOWFLAKE'
EXTERNAL_VOLUME='myIcebergVolume'
BASE_LOCATION='relative_path_from_external_volume';
Créer une table Iceberg avec AWS Glue comme catalogue
Cet exemple crée une table Iceberg qui utilise le catalogue de données AWS Glue. Pour remplacer l’espace de noms de catalogue par défaut et définir un espace de noms de catalogue pour la table, l’instruction utilise le paramètre CATALOG_NAMESPACE
facultatif.
CREATE ICEBERG TABLE myGlueTable
EXTERNAL_VOLUME='glueCatalogVolume'
CATALOG='glueCatalogInt'
CATALOG_TABLE_NAME='myGlueTable'
CATALOG_NAMESPACE='icebergcatalogdb2';
Créer une table Iceberg à partir de métadonnées Iceberg dans le stockage d’objets
Cet exemple crée une table Iceberg à partir de métadonnées Iceberg stockées dans un stockage Cloud externe. Il spécifie également un chemin d’accès relatif aux métadonnées de la table dans le volume externe.
CREATE ICEBERG TABLE myIcebergTable
EXTERNAL_VOLUME='icebergMetadataVolume'
CATALOG='icebergCatalogInt'
METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';
Spécifier un volume externe ou une intégration de catalogue avec un identificateur placé entre guillemets doubles
Cet exemple crée une table Iceberg avec un volume externe et une intégration de catalogue dont les identificateurs contiennent des guillemets doubles. Les identificateurs entre guillemets doubles sont sensibles à la casse et contiennent souvent des caractères spéciaux.
Les identificateurs "exvol_lower"
et "catint_lower"
sont spécifiés exactement tels qu’ils ont été créés (y compris avec les guillemets doubles). Le fait de ne pas inclure de guillemets peut entraîner une erreur Object does not exist
(ou un type d’erreur similaire).
Pour en savoir plus, voir Identificateurs entre guillemets doubles.
CREATE OR REPLACE ICEBERG TABLE itable_with_quoted_catalog
EXTERNAL_VOLUME = '"exvol_lower"'
CATALOG = '"catint_lower"'
METADATA_FILE_PATH='path/to/metadata/v1.metadata.json';