copy_file Fonction

S’applique à :check marqué oui Databricks SQL check marqué oui Databricks Runtime 18 LTS et versions ultérieures

Important

Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

Copie un fichier sur un chemin de destination et renvoie une FILE référence au fichier copié. Ne pas destination copier le fichier dans un stockage géré par Unity Catalog, qui convertit une FILE EXTERNAL référence en référence FILE MANAGED .

Syntax

copy_file(file => file
  [, destination => destination ]
  [, if_file_exists_mode => mode ])

Vous pouvez présenter des arguments selon la position ou par nom. Après avoir passé un argument par nom, tous les arguments suivants doivent aussi être transmis par nom. Pour plus d’informations, voir invocation de paramètre nommé.

Arguments

  • file: Une FILE valeur à copier.
  • destination: Un optionnel STRING avec le chemin complet du fichier de destination, pas seulement un répertoire. Lorsqu’il est omis, le fichier est copié dans un stockage géré par le catalogue Unity, convertissant une FILE EXTERNAL référence en FILE MANAGED référence.
  • if_file_exists_mode: Un optionnel STRING qui définit le comportement lorsqu’un fichier existe déjà sur le chemin de destination. Cela ne s’applique qu’à l’utilisation de l’argument destination . Les valeurs acceptées (insensibles à la majuscule) sont :
    • 'error': Soulève une erreur. Il s’agit de la valeur par défaut.
    • 'overwrite': Écrase le fichier existant.
    • 'skip': Saute la copie et renvoie une FILE référence au fichier existant.

Returns

Une FILE valeur qui fait référence au fichier copié.

Remarques

  • Omettre destination convertit une FILE EXTERNAL référence en FILE MANAGED. Azure Databricks applique également cette conversion automatiquement lorsque vous insérez une FILE EXTERNAL valeur dans une FILE MANAGED colonne.
  • Si un fichier existe déjà sur le chemin de destination, Azure Databricks génère une erreur par défaut à moins que vous ne posiez if_file_exists_mode sur overwrite ou skip.
  • Si le fichier source n'existe pas, Azure Databricks affiche une erreur. Pour retourner NULL au lieu de générer une erreur dans les deux cas, utilisez try_copy_file la fonction.

Conditions d’erreur courantes

  • COPY_FILE_ERROR.FILE_NOT_EXISTS
  • COPY_FILE_ERROR.FILE_ALREADY_EXISTS
  • COPY_FILE_AUTHORIZATION_ERROR.READ_UNAUTHORIZED
  • COPY_FILE_AUTHORIZATION_ERROR.WRITE_UNAUTHORIZED

Pour plus d’informations, voir Conditions d’erreur dans Azure Databricks.

Examples

Pour copier un fichier d’un volume à un autre :

SELECT copy_file(
  to_file('/Volumes/source/data/input.csv'),
  destination => '/Volumes/target/data/output.csv'
);

Pour copier des fichiers vers un volume cible en utilisant un nom de fichier par ligne :

SELECT copy_file(
  source_file,
  destination => '/Volumes/my_catalog/my_schema/my_volume/processed/' || file_name,
  if_file_exists_mode => 'skip'
)
FROM staging_files;

Pour écraser la destination si un fichier existe déjà :

SELECT copy_file(
  to_file('/Volumes/source/reports/report.pdf'),
  destination => '/Volumes/archive/reports/report.pdf',
  if_file_exists_mode => 'overwrite'
);

Si le fichier source n’existe pas, copy_file cela génère une erreur :

SELECT copy_file(deleted_file, destination => '/Volumes/archive/reports/report.pdf');
Error: COPY_FILE_ERROR.FILE_NOT_EXISTS