Étape 4. Copie de données dans des tables cibles

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 (contacts1.csv.gz). Exécutez ce qui suit :

    COPY INTO mycsvtable
      FROM @my_csv_stage/contacts1.csv.gz
      FILE_FORMAT = (FORMAT_NAME = mycsvformat)
      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 spécifie ce qu’il faut faire lorsque la commande COPY rencontre des erreurs dans les fichiers. Par défaut, la commande arrête le chargement des données lorsque la première erreur est rencontrée. Cependant, nous lui avons demandé d’ignorer tout fichier contenant une erreur et de passer au chargement du fichier suivant. Notez qu’il ne s’agit que d’une illustration, aucun des fichiers de ce tutoriel ne contient d’erreurs.

    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 |
    |-----------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------|
    | mycsvtable/contacts1.csv.gz | 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.gz à l’intérieur de la table mycsvtable .

    COPY INTO mycsvtable
      FROM @my_csv_stage
      FILE_FORMAT = (FORMAT_NAME = mycsvformat)
      PATTERN='.*contacts[1-5].csv.gz'
      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 (.*employees0[1-5].csv.gz).

    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 |
    |-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------|
    | mycsvtable/contacts2.csv.gz | LOADED      |           5 |           5 |           1 |           0 | NULL                                                                                                                                                                 |             NULL |                  NULL | NULL                    |
    | mycsvtable/contacts3.csv.gz | 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]        |
    | mycsvtable/contacts4.csv.gz | LOADED      |           5 |           5 |           1 |           0 | NULL                                                                                                                                                                 |             NULL |                  NULL | NULL                    |
    | mycsvtable/contacts5.csv.gz | LOADED      |           6 |           6 |           1 |           0 | NULL                                                                                                                                                                 |             NULL |                  NULL | NULL                    |
    +-----------------------------+-------------+-------------+-------------+-------------+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------+------------------+-----------------------+-------------------------+
    
    Copy

    Notez les points suivants dans le résultat :

    • Les données de contacts1.csv.gz 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.gz, contacts4.csv.gz, et contacts5.csv.gz.

    • Les données dans contacts3.csv.gz 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.gz dans la table myjsontable.

COPY INTO myjsontable
  FROM @my_json_stage/contacts.json.gz
  FILE_FORMAT = (FORMAT_NAME = myjsonformat)
  ON_ERROR = 'skip_file';
Copy

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 |
|------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------|
| myjsontable/contacts.json.gz | LOADED |           3 |           3 |           1 |           0 |        NULL |             NULL |                  NULL |                    NULL |
+------------------------------+--------+-------------+-------------+-------------+-------------+-------------+------------------+-----------------------+-------------------------+
Copy

Suivant : Étape 5. Résoudre les erreurs de chargement de données