create_file 函数

适用于:检查标记为“是”的 Databricks SQL 检查标记为“是”是 Databricks Runtime 18 LTS 及更高版本

Important

此功能在 Beta 版中。 工作区管理员可以从 预览 页控制对此功能的访问。 请参阅 Manage Azure Databricks 预览版

将字符串或二进制内容上传到目标路径,并返回 FILE 上传文件的引用。

Syntax

create_file(content => content
  [, destination_path => path ]
  [, if_file_exists => mode ]
  [, content_type => content_type ])

你可以按位置或名字传递论点。 在你通过名称传递参数后,后续所有参数也必须按名称传递。 更多信息请参见 命名参数调用

Arguments

  • content: A STRINGBINARY 表达式,内容可存储为文件。 A STRING 以 UTF-8 编码字节的形式存储。
  • destination_path:一个 STRING 可选上传路径。
  • if_file_exists:一个可选 STRING 程序,在目标路径已有文件时设置行为。 仅适用于使用该 destination_path 论证时。 公认值(大小写不区分)有:
    • 'error':出现错误。 这是默认值。
    • 'overwrite': 覆盖现有文件。
    • 'skip'跳过上传,返回 FILE 对现有文件的引用。
  • content_type: 一个 STRING 可选的,指定文件的内容类型。 如果未提供,内容类型将从输入字节推断。

Returns

一个 FILE 引用上传文件的值。

备注

  • 如果你使用 destination_path,文件会以原子方式上传到该路径。 你必须有写入权限,目标位置通常是Unity Catalog卷。
  • 如果目标路径已经存在文件,Azure Databricks 默认会报错,除非你设置为 if_file_existsoverwriteskip

常见错误条件

  • CREATE_FILE_ERROR.FILE_ALREADY_EXISTS
  • CREATE_FILE_AUTHORIZATION_ERROR.WRITE_UNAUTHORIZED
  • CREATE_FILE_ILLEGAL_USAGE.CONTENT_REQUIRED
  • CREATE_FILE_ILLEGAL_USAGE.IF_FILE_EXISTS_WITHOUT_DESTINATION
  • CREATE_FILE_ILLEGAL_USAGE.IF_FILE_EXISTS_MODE

欲了解更多信息,请参见 Azure Databricks 中的错误条件

Examples

要在给定路径上将字符串作为新文件存储:

SELECT create_file(
  content => 'hello, world',
  destination_path => '/Volumes/my_catalog/my_schema/my_volume/greetings.txt'
);

要存储原始字节并明确设置内容类型:

SELECT create_file(
  content => my_binary_col,
  destination_path => '/Volumes/my_catalog/my_schema/my_volume/image.png',
  content_type => 'image/png'
)
FROM raw_uploads;

如果目的地已有文件,跳过上传:

SELECT create_file(
  content => my_binary_col,
  destination_path => '/Volumes/my_catalog/my_schema/my_volume/report.pdf',
  if_file_exists => 'skip'
);

如果 destination_path 未设置, if_file_exists 则会报错:

SELECT create_file(content => 'data', if_file_exists => 'overwrite');
Error: CREATE_FILE_ILLEGAL_USAGE.IF_FILE_EXISTS_WITHOUT_DESTINATION