Préparation au chargement de 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 Référence de types de données SQL 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, Snowflake déterminera automatiquement la méthode de compression du fichier et du codec 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 fichiers 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.
ORC
Comprend la détection et le traitement automatiques des fichiers ORC compressés.
Parquet
Comprend la détection et le traitement automatiques des fichiers Parquet compressés. . . Actuellement, Snowflake prend en charge le schéma des fichiers Parquet produits à l’aide du générateur Parquet v1. Les fichiers produits en utilisant la v2 du générateur ne sont pas pris en charge.
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 fichiers 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 fichiers nommés 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 :
- Snowsight:
Sélectionnez Data » Databases.
Localisez une base de données et sélectionnez le schéma auquel vous souhaitez ajouter le format de fichier.
Sélectionnez Create » File Format.
Complétez l’instruction SQL et sélectionnez Create File Format.
- Classic Console:
- SQL:
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 :
Instruction COPY INTO TABLE.
Définition de la zone de préparation.
Définition de la table.
Note
Notez que 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.
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 :
Instruction COPY INTO TABLE.
Définition de la zone de préparation.
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é.