适用于:
Databricks SQL
Databricks Runtime 18 LTS 及更高版本
Important
此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版。
将文件复制到目标路径并返回 FILE 引用,或者 NULL 当源文件不存在或无法访问时返回。 省略 destination 将文件复制到 Unity Catalog 管理的存储,该存储将 FILE EXTERNAL 引用转换为引用 FILE MANAGED 。
Syntax
try_copy_file(file => file
[, destination => destination ]
[, if_file_exists_mode => mode ])
你可以按位置或名字传递论点。 在你通过名称传递参数后,后续所有参数也必须按名称传递。 更多信息请参见 命名参数调用。
Arguments
-
file:一个FILE需要复制的值。 -
destination:一个STRING可选的,包含完整的目标文件路径,而不仅仅是一个目录。 当被省略时,文件会被复制到Unity Catalog管理的存储中,将FILE EXTERNAL引用转换为引用FILE MANAGED。 -
if_file_exists_mode:一个可选STRING程序,在目标路径已有文件时设置行为。 仅适用于使用该destination论证时。 公认值(大小写不区分)有:-
'error':出现错误。 这是默认值。 -
'overwrite': 覆盖现有文件。 -
'skip'跳过复制,返回FILE对现有文件的引用。
-
Returns
一个 FILE 引用复制文件的值,或者 NULL 如果源文件不存在或无法访问。
备注
- 该函数是函数的容错版本
copy_file。 在将FILE EXTERNAL引用转换为引用FILE MANAGED时,无论转换是显式(省destination略)还是自动(在列中插入FILE EXTERNAL值FILE MANAGED)时,都可以用它忽略错误。 - 如果目标路径已经存在文件,Azure Databricks 默认会报错,除非你设置为
if_file_exists_modeoverwrite或skip。
常见错误条件
COPY_FILE_ERROR.FILE_ALREADY_EXISTSCOPY_FILE_AUTHORIZATION_ERROR.WRITE_UNAUTHORIZED
欲了解更多信息,请参见 Azure Databricks 中的错误条件。
Examples
如果源文件不存在,返回 try_copy_fileNULL:
SELECT try_copy_file(deleted_file, destination => '/Volumes/archive/reports/report.pdf');
NULL
要将文件复制到 Unity Catalog 管理的存储,将引用转换为 FILE EXTERNAL 引用 FILE MANAGED ,请省略目标:
SELECT try_copy_file(to_file('/Volumes/source/data/input.csv'));
要复制文件并覆盖任何已有的目标文件:
SELECT try_copy_file(
to_file('/Volumes/source/reports/report.pdf'),
destination => '/Volumes/archive/reports/report.pdf',
if_file_exists_mode => 'overwrite'
);