create_file 函數

適用於:勾選標記為是 Databricks SQL 勾選 Databricks 執行時間 18 LTS 及以上

Important

這項功能位於 測試版 (Beta) 中。 工作區管理員可以從 「預覽 」頁面控制對此功能的存取。 請參閱 管理 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 參考已上傳檔案的值。

Notes

  • 如果你使用 destination_path,檔案會以原子方式上傳到該路徑。 你必須有寫入權限,目標是 Unity 目錄的磁碟區。
  • 如果目標路徑已經有檔案存在,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