Étape 3. Copie de données dans la table cible

Exécutez COPY INTO <table> pour charger les données en zone de préparation dans les tables cibles.

CSV

Pour charger les données des fichiers CSV d’exemple :

  1. Commencez par charger les données d’un des fichiers du préfixe (dossier) /tutorials/dataloading/ nommé contacts1.csv dans la table mycsvtable. Exécutez ce qui suit :

    COPY INTO mycsvtable
      FROM @my_csv_stage/tutorials/dataloading/contacts1.csv
      ON_ERROR = 'skip_file';
    
    Copy

    Où :

    • La clause FROM spécifie l’emplacement du fichier de données en zone de préparation (nom de la zone de préparation suivi du nom du fichier).

    • La clause ON_ERROR = 'skip_file' spécifie ce qu’il faut faire lorsque la commande COPY rencontre des erreurs dans les fichiers. Dans ce cas, lorsque la commande rencontre une erreur de données sur l’un des enregistrements dans un fichier, elle ignore le fichier. Si vous ne spécifiez pas de clause ON_ERROR, la valeur par défaut est abort_statement, ce qui annule la commande COPY lors de la première erreur rencontrée sur l’un des enregistrements d’un fichier.

    La commande COPY renvoie un résultat indiquant le nom du fichier copié et les informations connexes :

    +---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
    | file                                                    | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name |
    |---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------|
    | s3://snowflake-docs/tutorials/dataloading/contacts1.csv | LOADED |           5 |           5 |           1 |           0 |        NULL |             NULL |                  NULL |                    NULL |
    +---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
    
    Copy
  2. Chargez le reste des fichiers en zone de préparation dans la table mycsvtable.

    L’exemple suivant utilise le filtrage par critères spéciaux pour charger les données des fichiers correspondant à l’expression régulière .*contacts[1-5].csv à l’intérieur de la table mycsvtable.

    COPY INTO mycsvtable
      FROM @my_csv_stage/tutorials/dataloading/
      PATTERN='.*contacts[1-5].csv'
      ON_ERROR = 'skip_file';
    
    Copy

    Où la clause PATTERN spécifie que la commande doit charger les données à partir des noms de fichiers correspondant à cette expression régulière .*contacts[1-5].csv.

    La commande COPY renvoie un résultat indiquant le nom du fichier copié et les informations connexes :

    +---------------------------------------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+
    | file                                                    | status      | rows_parsed | rows_loaded | error_limit | errors_seen | first_error                                                                                                                                                          | first_error_line | first_error_character | first_error_column_name |
    |---------------------------------------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------|
    | s3://snowflake-docs/tutorials/dataloading/contacts2.csv | LOADED      |           5 |           5 |           1 |           0 | NULL                                                                                                                                                                 |             NULL |                  NULL | NULL                    |
    | s3://snowflake-docs/tutorials/dataloading/contacts3.csv | LOAD_FAILED |           5 |           0 |           1 |           2 | Number of columns in file (11) does not match that of the corresponding table (10), use file format option error_on_column_count_mismatch=false to ignore this error |                3 |                     1 | "MYCSVTABLE"[11]        |
    | s3://snowflake-docs/tutorials/dataloading/contacts4.csv | LOADED      |           5 |           5 |           1 |           0 | NULL                                                                                                                                                                 |             NULL |                  NULL | NULL                    |
    | s3://snowflake-docs/tutorials/dataloading/contacts5.csv | LOADED      |           6 |           6 |           1 |           0 | NULL                                                                                                                                                                 |             NULL |                  NULL | NULL                    |
    +---------------------------------------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+
    
    Copy

    Notez les points suivants dans le résultat :

    • Les données de contacts1.csv sont ignorées parce que nous avons déjà chargé les données avec succès.

    • Les données de ces fichiers ont été chargées avec succès : contacts2.csv, contacts4.csv, et contacts5.csv.

    • Les données dans contacts3.csv sont ignorées en raison de 2 erreurs de données. L’étape suivante de ce tutoriel traite de la validation et de la correction des erreurs.

JSON

Chargez le fichier de données en zone de préparation contacts.json dans la table myjsontable.

COPY INTO myjsontable
  FROM @my_json_stage/tutorials/dataloading/contacts.json
  ON_ERROR = 'skip_file';
Copy

COPY renvoie un résultat indiquant le nom du fichier copié et des informations connexes :

+---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
| file                                                    | status | rows_parsed | rows_loaded | error_limit | errors_seen | first_error | first_error_line | first_error_character | first_error_column_name |
|---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------|
| s3://snowflake-docs/tutorials/dataloading/contacts.json | LOADED |           3 |           3 |           1 |           0 |        NULL |             NULL |                  NULL |                    NULL |
+---------------------------------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
Copy

Suivant : Étape 4. Résolution des erreurs de chargement de données liées à des problèmes de données