Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Modèles courants de chargement de données utilisant
Découvrez les modèles courants d’utilisation de COPY INTO pour charger des données à partir de sources de fichiers dans Delta Lake.
Il existe de nombreuses options d’utilisation de COPY INTO. Vous pouvez également utiliser des informations d’identification temporaires en combinaison avec COPY INTO ces schémas.
Consultez COPY INTO pour une référence complète de toutes les options.
Créer des tables cibles pour COPY INTO
COPY INTO doit cibler une table Delta existante.
CREATE TABLE IF NOT EXISTS my_table
[(col_1 col_1_type, col_2 col_2_type, ...)]
[COMMENT <table-description>]
[TBLPROPERTIES (<table-properties>)];
Dans Databricks Runtime 11.3 LTS et versions ultérieures, la définition du schéma pour ces tables est facultative pour les formats qui prennent en charge l’évolution du schéma. Pour plus d’informations, consultez l’inférence de schéma et l’évolution COPY INTO .
Charger des données JSON utilisant COPY INTO
L’exemple suivant charge les données JSON de cinq fichiers dans Azure Data Lake Storage (ADLS) dans la table Delta appelée my_json_data. Cette table doit être créée avant de pouvoir exécuter COPY INTO. Si des données ont déjà été chargées à partir de l’un des fichiers, les données ne sont pas rechargées pour ce fichier.
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
FILEFORMAT = JSON
FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')
-- The second execution will not copy any data since the first command already loaded the data
COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
FILEFORMAT = JSON
FILES = ('f1.json', 'f2.json', 'f3.json', 'f4.json', 'f5.json')
Charger des données Avro utilisant COPY INTO
L’exemple suivant charge les données Avro dans ADLS à l’aide d’expressions SQL supplémentaires dans le cadre de l’instruction SELECT .
COPY INTO my_delta_table
FROM (SELECT to_date(dt) dt, event as measurement, quantity::double
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
FILEFORMAT = AVRO
Charger des fichiers CSV utilisant COPY INTO
L’exemple suivant charge les fichiers CSV d’Azure Data Lake Storage dans abfss://container@storageAccount.dfs.core.windows.net/base/path/folder1 une table Delta.
COPY INTO target_table
FROM (SELECT key, index, textData, 'constant_value'
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
FILEFORMAT = CSV
PATTERN = 'folder1/file_[a-g].csv'
FORMAT_OPTIONS('header' = 'true')
-- The example below loads CSV files without headers in ADLS using COPY INTO.
-- By casting the data and renaming the columns, you can put the data in the schema you want
COPY INTO target_table
FROM (SELECT _c0::bigint key, _c1::int index, _c2 textData
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path')
FILEFORMAT = CSV
PATTERN = 'folder1/file_[a-g].csv'
Inférence et évolution de schéma utilisant COPY INTO
Cette section fournit des exemples d’inférence de schéma et de configurations d’évolution courantes utilisant COPY INTO.
Syntaxe
COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
FORMAT_OPTIONS ('inferSchema' = 'true', `mergeSchema` = `true`)
COPY_OPTIONS ('mergeSchema' = 'true');
Les éléments FORMAT_OPTIONS suivants sont disponibles pour déduire automatiquement le schéma d’entrée avec COPY INTO :
inferSchema: indique s’il faut déduire les types de données des enregistrements analysés ou supposer que toutes les colonnes sont de typeStringType.mergeSchema: indique s’il faut déduire le schéma entre plusieurs fichiers sources et fusionner le schéma de chaque fichier source.Si les fichiers sources ont le même schéma, Databricks recommande d’utiliser le paramètre par défaut pour
mergeSchemadansFORMAT_OPTIONS(false).
Les éléments COPY_OPTIONS suivants sont disponibles pour faire évoluer le schéma cible avec COPY INTO :
mergeSchema: indique s’il faut faire évoluer le schéma de la table Delta cible en fonction du schéma d’entrée.Si le schéma d’entrée et le schéma cible sont identiques,
mergeSchemapeut êtrefalsedansCOPY_OPTIONS.
Déduire et faire évoluer le schéma CSV
L’exemple suivant crée une table Delta sans schéma appelée my_pipe_data et charge un fichier CSV délimité par un canal avec un en-tête.
mergeSchema est true dans FORMAT_OPTIONS, car les fichiers d’entrée peuvent avoir des différences d’en-tête ou de délimiteur.
CREATE TABLE IF NOT EXISTS my_pipe_data;
COPY INTO my_pipe_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/base/path'
FILEFORMAT = CSV
FORMAT_OPTIONS ('mergeSchema' = 'true',
'delimiter' = '|',
'header' = 'true')
COPY_OPTIONS ('mergeSchema' = 'true');
Ignorer les fichiers endommagés lors du chargement des données
Si les données que vous chargez ne peuvent pas être lues en raison d’un problème d’altération, ces fichiers peuvent être ignorés en réglant ignoreCorruptFiles à true dans le FORMAT_OPTIONS.
Le résultat de la commande COPY INTO retourne le nombre de fichiers ignorés en raison d’une altération dans la colonne num_skipped_corrupt_files. Cette métrique s’affiche également dans la colonne operationMetrics sous numSkippedCorruptFiles après l’exécution de DESCRIBE HISTORY sur la table Delta.
Les fichiers endommagés ne sont pas suivis par COPY INTO. Ils peuvent donc être rechargés lors d’une exécution ultérieure si la corruption est corrigée. Vous pouvez voir quels fichiers sont endommagés en exécutant COPY INTO en mode VALIDATE.
COPY INTO my_table
FROM '/path/to/files'
FILEFORMAT = <format>
[VALIDATE ALL]
FORMAT_OPTIONS ('ignoreCorruptFiles' = 'true')
Remarque
ignoreCorruptFiles est disponible dans Databricks Runtime 11.3 LTS et versions ultérieures.