Préparation du chargement des données

Ce chapitre fournit une vue d’ensemble des formats de fichier de données et de compression de données pris en charge. Selon la structure de vos données, vous pourriez avoir besoin de préparer les données avant de les charger.

Dans ce chapitre :

Types de données pris en charge

Voir Types de données pour obtenir des descriptions des types de données pris en charge par Snowflake.

Compression de fichiers de données

Nous vous recommandons de compresser vos fichiers de données lorsque vous chargez de grands ensembles de données. Voir CREATE FILE FORMAT pour les algorithmes de compression pris en charge pour chaque type de données.

Lors du chargement de données compressées, spécifiez la méthode de compression pour vos fichiers de données. L’option de format de fichier COMPRESSION décrit comment vos fichiers de données sont déjà compressés dans la zone de préparation. Réglez l’option COMPRESSION de l’une des façons suivantes :

  • Comme option de format de fichier spécifiée directement dans l’instruction COPY INTO <table>.

  • Comme option de format de fichier spécifiée pour un format de fichier ou un objet de zone de préparation nommé. Le format de fichier/d’objet de zone de préparation nommé peut alors être référencé dans la commande COPY INTO <table>.

Formats de fichier pris en charge

Les formats de fichiers suivants sont pris en charge :

Structuré/Semi-structuré

Type

Remarques

Structuré

Délimité (CSV, TSV, etc.)

Tout délimiteur à un seul octet valide est pris en charge. La valeur par défaut est la virgule (c.-à-d. CSV).

Semi-structuré

JSON

Avro

Comprend la détection et le traitement automatiques des fichiers Avro compressés par Snappy.

ORC

Comprend la détection et le traitement automatiques des fichiers ORC compressés par Snappy- ou zlib.

Parquet

Comprend la détection et le traitement automatiques des fichiers Parquet compressés par Snappy.

XML

Pris en charge en tant que fonctionnalité préliminaire.

Les options de format de fichier spécifient le type de données contenues dans un fichier, ainsi que d’autres caractéristiques relatives au format des données. Les options de format de fichier que vous pouvez spécifier sont différentes selon le type de données que vous chargez. Snowflake fournit un ensemble complet d’options de format de fichier par défaut.

Formats de fichiers semi-structurés

Snowflake prend en charge nativement les données semi-structurées, ce qui signifie que les données semi-structurées peuvent être chargées dans des tables relationnelles sans nécessiter la définition préalable d’un schéma. Snowflake prend en charge le chargement de données semi-structurées directement dans des colonnes de type VARIANT (voir Types de données semi-structurées pour plus de détails).

Les formats de données semi-structurées actuellement pris en charge sont les suivants : JSON, Avro, ORC, Parquet ou XML :

  • Pour les données JSON, Avro, ORC et Parquet, chaque objet complet de niveau supérieur est chargé comme une ligne séparée dans la table. Chaque objet peut contenir des caractères de nouvelle ligne et des espaces tant que l’objet reste valide.

  • Pour les données XML, chaque élément de niveau supérieur est chargé comme une ligne séparée dans la table. Un élément est identifié par une balise de début et de fin du même nom.

Généralement, les tables utilisées pour stocker les données semi-structurées sont constituées d’une seule colonne VARIANT. Une fois les données chargées, vous pouvez interroger les données comme des données structurées. Vous pouvez également exécuter d’autres tâches, telles que l’extraction des valeurs et des objets issus de tableaux. Pour plus d’informations, voir la fonctionnalité de table FLATTEN.

Note

Les données semi-structurées peuvent être chargées dans des tables à colonnes multiples, mais les données semi-structurées doivent être stockées sous forme de champs dans un fichier structuré (par ex. un fichier CSV). Ensuite, les données peuvent être chargées dans une colonne spécifiée dans la table.

Formats de fichier nommés

Snowflake prend en charge la création de formats de fichier nommé qui sont des objets de base de données encapsulant toutes les informations de format requises. Les formats de fichier nommé peuvent ensuite être utilisés comme entrée aux mêmes endroits où vous pouvez spécifier des options de format de fichier individuelles, aidant ainsi à simplifier le processus de chargement de données pour des données formatées de façon similaire.

Les formats de fichier nommé sont facultatifs, mais sont recommandés lorsque vous prévoyez de charger régulièrement des données au format similaire.

Création d’un format de fichier nommé

Vous pouvez créer un format de fichier en utilisant l’interface Web ou SQL :

Interface Web

Cliquez sur Databases Databases tab » <nom_bdd> » File Formats

SQL

CREATE FILE FORMAT

Pour obtenir des descriptions de toutes les options de format de fichier et des valeurs par défaut, voir CREATE FILE FORMAT.

Remplacement des options de format de fichier par défaut

Vous pouvez définir les paramètres de format de fichier pour vos données mises en zone de préparation (c’est-à-dire remplacer les paramètres par défaut) dans l’un des emplacements suivants :

Dans la définition de la table

Définissez explicitement les options à l’aide du paramètre FILE_FORMAT. Pour plus d’informations, voir CREATE TABLE.

Dans la définition de la zone de préparation nommée

Définissez explicitement les options à l’aide du paramètre FILE_FORMAT. La zone de préparation est ensuite référencée dans l’instruction COPY INTO TABLE. Pour plus d’informations, voir CREATE STAGE.

Directement dans l’instruction COPY INTO TABLE lors du chargement de données

Définissez explicitement les options séparément. Pour plus d’informations, voir COPY INTO <table>.

Si les options de format de fichier sont spécifiées à plusieurs endroits, l’opération de chargement les applique avec l’ordre de préséance suivant :

  1. Instruction COPY INTO TABLE.

  2. Définition de la zone de préparation.

  3. Définition de la table.

Note

Les options de format de fichier définies à plusieurs emplacements ne s’additionnent pas. Toutes les options définies à un endroit remplacent toutes les options (qu’elles soient identiques ou différentes) définies plus bas dans la hiérarchie.

Prise en charge du format de fichier dans les fonctionnalités Snowflake

Le tableau suivant indique la prise en charge des options de format de fichier dans l’ensemble de fonctionnalités :

TYPE = CSV

Option de format de fichier

Chargement de la copie [1]

Copier le déchargement

Table externe

Requête sur la zone de préparation [2]

COMPRESSION

RECORD_DELIMITER

FIELD_DELIMITER

FILE_EXTENSION

N/A

N/A

N/A

SKIP_HEADER

N/A

SKIP_BLANK_LINES

N/A

N/A

DATE_FORMAT

N/A

N/A

N/A

TIME_FORMAT

N/A

N/A

N/A

TIMESTAMP_FORMAT

N/A

N/A

N/A

BINARY_FORMAT

N/A

N/A

N/A

ESCAPE

N/A

ESCAPE_UNENCLOSED_FIELD

TRIM_SPACE

N/A

FIELD_OPTIONALLY_ENCLOSED_BY

NULL_IF

ERROR_ON_COLUMN_COUNT_MISMATCH

N/A

N/A

N/A

REPLACE_INVALID_CHARACTERS

N/A

N/A

N/A

VALIDATE_UTF8

N/A

EMPTY_FIELD_AS_NULL

SKIP_BYTE_ORDER_MARK

N/A

ENCODING

N/A

[1] Inclut le chargement de données en masse et Snowpipe.

[2] Inclut l’interrogation de données dans des fichiers en zone de préparation et la transformation des données lors d’un chargement (via le chargement de données en masse ou Snowpipe).

TYPE = JSON

Option de format de fichier

Chargement de la copie [1]

Copier le déchargement

Table externe

Requête sur la zone de préparation [2]

COMPRESSION

FILE_EXTENSION

N/A

N/A

N/A

ENABLE_OCTAL

N/A

N/A

N/A

ALLOW_DUPLICATE

N/A

STRIP_OUTER_ARRAY

N/A

STRIP_NULL_VALUES

N/A

IGNORE_UTF8_ERRORS

N/A

SKIP_BYTE_ORDER_MARK

N/A

NULL_IF

TRIM_SPACE

N/A

DATE_FORMAT

N/A

N/A

N/A

TIME_FORMAT

N/A

N/A

N/A

TIMESTAMP_FORMAT

N/A

N/A

N/A

BINARY_FORMAT

N/A

N/A

N/A

[1] Inclut le chargement de données en masse et Snowpipe.

[2] Inclut l’interrogation de données dans des fichiers en zone de préparation et la transformation des données lors d’un chargement (via le chargement de données en masse ou Snowpipe).

TYPE = AVRO

Option de format de fichier

Chargement de la copie [1]

Copier le déchargement

Table externe

Requête sur la zone de préparation [2]

COMPRESSION

N/A

NULL_IF

N/A

N/A

N/A

TRIM_SPACE

N/A

N/A

N/A

[1] Inclut le chargement de données en masse et Snowpipe.

[2] Inclut l’interrogation de données dans des fichiers en zone de préparation et la transformation des données lors d’un chargement (via le chargement de données en masse ou Snowpipe).

TYPE = ORC

Option de format de fichier

Chargement de la copie [1]

Copier le déchargement

Table externe

Requête sur la zone de préparation [2]

NULL_IF

N/A

N/A

N/A

TRIM_SPACE

N/A

N/A

N/A

[1] Inclut le chargement de données en masse et Snowpipe.

[2] Inclut l’interrogation de données dans des fichiers en zone de préparation et la transformation des données lors d’un chargement (via le chargement de données en masse ou Snowpipe).

TYPE = PARQUET

Option de format de fichier

Chargement de la copie [1]

Copier le déchargement

Table externe

Requête sur la zone de préparation [2]

COMPRESSION

SNAPPY_COMPRESSION

N/A

N/A

N/A

BINARY_AS_TEXT

N/A

N/A

NULL_IF

N/A

N/A

N/A

TRIM_SPACE

N/A

N/A

N/A

[1] Inclut le chargement de données en masse et Snowpipe.

[2] Inclut l’interrogation de données dans des fichiers en zone de préparation et la transformation des données lors d’un chargement (via le chargement de données en masse ou Snowpipe).

TYPE = XML

Option de format de fichier

Chargement de la copie [1]

Copier le déchargement

Table externe

Requête sur la zone de préparation [2]

COMPRESSION

N/A

IGNORE_UTF8_ERRORS

N/A

N/A

???

PRESERVE_SPACE

N/A

N/A

???

STRIP_OUTER_ELEMENT

N/A

N/A

???

DISABLE_SNOWFLAKE_DATA

N/A

N/A

???

DISABLE_AUTO_CONVERT

N/A

N/A

???

SKIP_BYTE_ORDER_MARK

N/A

N/A

???

NULL_IF

N/A

N/A

???

TRIM_SPACE

N/A

N/A

???

[1] Inclut le chargement de données en masse et Snowpipe.

[2] Inclut l’interrogation de données dans des fichiers en zone de préparation et la transformation des données lors d’un chargement (via le chargement de données en masse ou Snowpipe).

Options de copie prises en charge

Les options de copie déterminent le comportement d’un chargement de données en ce qui concerne la gestion des erreurs, la taille maximale des données, etc.

Pour obtenir une description de toutes les options de copie et des valeurs par défaut, voir COPY INTO <table>.

Remplacement des options de copie par défaut

Vous pouvez spécifier le comportement de chargement souhaité (c’est-à-dire remplacer les paramètres par défaut) dans l’un des emplacements suivants :

Dans la définition de la table

Définissez explicitement les options à l’aide du paramètre STAGE_COPY_OPTIONS. Pour plus d’informations, voir CREATE TABLE.

Dans la définition de la zone de préparation nommée

Définissez explicitement les options à l’aide du paramètre COPY_OPTIONS. La zone de préparation est ensuite référencée dans l’instruction COPY INTO TABLE. Pour plus d’informations, voir CREATE STAGE.

Directement dans l’instruction COPY INTO TABLE lors du chargement de données

Définissez explicitement les options séparément. Pour plus d’informations, voir COPY INTO <table>.

Si les options de copie sont spécifiées à plusieurs emplacements, l’opération de chargement les applique dans l’ordre de priorité suivant :

  1. Instruction COPY INTO TABLE.

  2. Définition de la zone de préparation.

  3. Définition de la table.

Note

Les options de copie définies dans plusieurs emplacements s’additionnent. Les options individuelles définies à un endroit remplacent les mêmes options définies plus bas dans l’ordre de priorité.