Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime
Charge des données à partir d’un emplacement de fichier dans une table Delta. Il s’agit d’une opération retentante et idempotente. Les fichiers dans l’emplacement source qui ont déjà été chargés sont ignorés. Cela vaut même si les fichiers ont été modifiés depuis leur chargement.
Pour obtenir des exemples, consultez modèles de chargement de données courants à l’aide de COPY INTO.
Syntaxe
COPY INTO target_table [ BY POSITION | ( col_name [ , <col_name> ... ] ) ]
FROM { source_clause |
( SELECT expression_list FROM source_clause ) }
FILEFORMAT = data_source
[ VALIDATE [ ALL | num_rows ROWS ] ]
[ FILES = ( file_name [, ...] ) | PATTERN = glob_pattern ]
[ FORMAT_OPTIONS ( { data_source_reader_option = value } [, ...] ) ]
[ COPY_OPTIONS ( { copy_option = value } [, ...] ) ]
source_clause
source [ WITH ( [ CREDENTIAL { credential_name |
(temporary_credential_options) } ]
[ ENCRYPTION (encryption_options) ] ) ]
Paramètres
target_tableIdentifie une table Delta existante. Les target_table ne doivent pas inclure de spécification temporelle ou de spécification d’options.
Si le nom de la table est fourni sous la forme d’un emplacement, par exemple
delta.`/path/to/table`, le Catalogue Unity peut régir l’accès aux emplacements auxquels vous écrivez. Vous pouvez écrire dans un emplacement externe en :- Définissant l’emplacement en tant qu’emplacement externe et disposant des autorisations
WRITE FILESsur cet emplacement externe. - Disposant des autorisations
WRITE FILESsur des informations d’identification de stockage nommées qui fournissent l’autorisation d’écrire dans un emplacement à l’aide de :COPY INTO delta.`/some/location` WITH (CREDENTIAL <named-credential>)
Pour plus d’informations , consultez Se connecter au stockage d’objets cloud à l’aide du catalogue Unity .
- Définissant l’emplacement en tant qu’emplacement externe et disposant des autorisations
BY POSITION| ( col_name [ , <col_name> ... ] )Fait correspondre aux colonnes sources les colonnes de table cible par position ordinale. Le cast de type des colonnes mises en correspondance est effectué automatiquement.
Ce paramètre est pris en charge uniquement pour le format de fichier CSV sans en-tête. Vous devez spécifier la valeur
FILEFORMAT = CSV.FORMAT_OPTIONSdoit également être défini sur("headers" = "false")(FORMAT_OPTIONS ("headers" = "false")est la valeur par défaut).Options de syntaxe 1 :
BY POSITION- Fait automatiquement correspondre aux colonnes sources les colonnes de table cible par position ordinale.
- La correspondance de noms par défaut n’est pas utilisée comme méthode de correspondance.
- Les colonnes
IDENTITYet les colonnesGENERATEDde la table cible sont ignorées lors de la correspondance aux colonnes sources. - Si le nombre de colonnes sources n’est pas égal aux colonnes de la table cible filtrée,
COPY INTOgénère une erreur.
Options de syntaxe 2 :
( col_name [ , <col_name> ... ] )- Fait correspondre aux colonnes sources les colonnes de la table cible spécifiées par position ordinale relative à l’aide d’une liste de noms de colonne de la table cible entre parenthèses, séparés par des virgules.
- L’ordre des colonnes de table d’origine et les noms de colonnes ne sont pas utilisés pour la correspondance.
- Les colonnes
IDENTITYet les colonnesGENERATEDne peuvent pas être spécifiées dans la liste des noms de colonne, sinonCOPY INTOgénère une erreur. - Les colonnes spécifiées ne peuvent pas être dupliquées.
- Lorsque le nombre de colonnes sources n’est pas égal aux colonnes de table spécifiées,
COPY INTOgénère une erreur. - Pour les colonnes non spécifiées dans la liste des noms de colonne,
COPY INTOattribue les valeurs par défaut, le cas échéant, sinon il attribueNULL. Si une colonne ne peut accepter la valeur Null,COPY INTOgénère une erreur.
- Fait automatiquement correspondre aux colonnes sources les colonnes de table cible par position ordinale.
sourceEmplacement du fichier à partir duquel charger les données. Les fichiers de cet emplacement doivent avoir le format spécifié dans
FILEFORMAT. L’emplacement est fourni sous la forme d’un URI.L’accès à l’emplacement source peut être fourni via :
credential_nameNom facultatif des informations d’identification utilisées pour accéder à l’emplacement de stockage ou y écrire des données. Vous utilisez ces informations d'identification uniquement si l'emplacement du fichier n'est pas inclus dans un emplacement externe. Consultez credential_name.
Informations d’identification temporaires inline.
- Définir l'emplacement source comme un emplacement externe et disposer des autorisations
READ FILESsur l'emplacement externe via Unity Catalog. - Utilisation d'identifiants de stockage nommés avec des autorisations
READ FILESautorisant la lecture depuis un emplacement via Unity Catalog.
Vous n’avez pas besoin de fournir des informations d’identification inline ou nommées si le chemin d’accès est déjà défini comme un emplacement externe pour lequel vous avez les autorisations nécessaires. Pour plus d’informations, consultez Vue d’ensemble des emplacements externes .
Remarque
Si le chemin du fichier source est un chemin racine, veuillez ajouter une barre oblique (
/) à la fin du chemin du fichier, par exemple,s3://my-bucket/.Les options d’informations d’identification acceptées sont les suivantes :
-
AZURE_SAS_TOKENpour ADLS et Stockage Blob Azure -
AWS_ACCESS_KEY,AWS_SECRET_KEYetAWS_SESSION_TOKENpour AWS S3
Les options de chiffrement acceptées sont les suivantes :
-
TYPE = 'AWS_SSE_C'etMASTER_KEYpour AWS S3
Consultez Charger des données à l’aide de COPY INTO avec d’informations d’identification temporaires.
SELECT expression_listSélectionne les colonnes ou expressions spécifiées dans les données sources avant de les copier dans la table Delta. Les expressions peuvent être tout ce que vous utilisez avec des instructions
SELECT, y compris les opérations de fenêtre. Vous pouvez utiliser les expressions d'agrégation uniquement pour les agrégats globaux ; vous ne pouvez pas utiliserGROUP BYsur des colonnes avec cette syntaxe.FILEFORMAT = data_sourceFormat des fichiers source à charger. L'un des suivants :
CSV,JSON,AVRO,ORC,PARQUET,TEXT,BINARYFILE.VALIDATES’applique à :
Databricks SQL
Databricks Runtime 10.4 LTS et ultérieurLes données à charger dans une table sont validées, mais ne sont pas écrites dans la table. Ces validations comprennent :
- Indique si les données peuvent être analysées.
- Indique si le schéma correspond à celui de la table ou si le schéma doit évoluer.
- Indique si toutes les contraintes d’acceptation de valeurs Null et de validation sont respectées.
Par défaut, toutes les données à charger sont validées. Vous pouvez fournir un certain nombre de lignes à valider avec le mot clé
ROWS, par exempleVALIDATE 15 ROWS. L'instructionCOPY INTOrenvoie un aperçu des données de 50 lignes ou moins, lorsqu'un nombre inférieur à 50 est utilisé avec le mot cléROWS).FILESListe des noms de fichiers à charger, avec une limite de 1 000 fichiers. Impossible à spécifier avec
PATTERN.PATTERNModèle Glob qui identifie les fichiers à charger à partir du répertoire source. Impossible à spécifier avec
FILES.Modèle Descriptif ?Correspond à n’importe quel caractère unique *Correspond à zéro ou plusieurs caractères [abc]Correspond à un seul caractère du jeu de caractères {a,b,c}. [a-z]Correspond à un seul caractère de la plage de caractères {a…z}. [^a]Correspond à un seul caractère qui ne fait pas partie du jeu ou de la plage de caractères {a}. Notez que le caractère ^doit se trouver immédiatement à droite du crochet ouvrant.{ab,cd}Correspond à une chaîne de l'ensemble de chaînes {ab, cd}. {ab,c{de, fh}}Correspond à une chaîne de l'ensemble de chaînes {ab, cde, cfh}. FORMAT_OPTIONSOptions à passer au lecteur de sources de données Apache Spark pour le format spécifié. Voir Options de format pour chaque format de fichier.
COPY_OPTIONSOptions permettant de contrôler le fonctionnement de la commande
COPY INTO.-
force: booléenne, par défautfalse. Si la valeur est définie àtrue, l'idempotence est désactivée et les fichiers sont chargés, qu'ils aient déjà été chargés ou non. -
mergeSchema: booléenne, par défautfalse. Avec la valeurtrue, le schéma peut évoluer en fonction des données entrantes.
-
Appeler COPY INTO simultanément
COPY INTO prend en charge les appels simultanés sur la même table. À condition que COPY INTO soit invoquée simultanément sur des ensembles distincts de fichiers d’entrée, chaque invocation devrait finalement aboutir, sinon il y a un conflit de transaction.
COPY INTO ne doit pas être appelé simultanément pour améliorer les performances ; une commande unique COPY INTO avec plusieurs fichiers fonctionne généralement mieux que d’exécuter des commandes simultanées COPY INTO avec un seul fichier chacune.
COPY INTO peut être appelé simultanément lorsque :
- Plusieurs producteurs de données n’ont pas de moyen simple de coordonner et ne peuvent pas faire un appel unique.
- Lorsqu’un répertoire très volumineux peut être ingéré sous-répertoire par sous-répertoire. Lors de l’ingestion de répertoires contenant un très grand nombre de fichiers, Databricks recommande d’utiliser Auto Loader lorsque cela est possible.
Accéder aux métadonnées des fichiers
Pour savoir comment accéder aux métadonnées pour les sources de données basées sur des fichiers, consultez la colonne Métadonnées de fichier.
Options de format
Pour obtenir des options spécifiques à chaque format de fichier (JSON, CSV, XML, Parquet, Avro, text, ORC et binary), consultez les options DataFrameReader.