在Azure Databricks中使用COPY INTO处理abfss路径空格问题
解决Databricks COPY INTO路径含空格的URISyntaxException错误
遇到路径中包含空格导致的URISyntaxException,不用非要修改文件夹名称,以下两种方法可以解决问题:
方法1:用双引号包裹路径字符串
将路径的单引号替换为双引号,直接保留空格即可:
COPY INTO prod_gbs_gpdi.bronze_data.my_table FROM "abfss://gpdi-files@hgbsprodgbsflastorage01.dfs.core.windows.net/RAW/AP Posted/" FILEFORMAT = CSV VALIDATE 500 ROWS PATTERN = 'AP_SAPEX_KPI_001 - Posted Invoices in 2021_3.CSV' FORMAT_OPTIONS( 'header'='true', 'delimiter'=';', 'skipRows'='8', 'mergeSchema'='true', 'encoding'='UTF-8', 'enforceSchema'='true', 'ignoreLeadingWhiteSpace'='true', 'ignoreTrailingWhiteSpace'='true', 'mode'='PERMISSIVE' ) COPY_OPTIONS ( 'force' = 'true', 'mergeSchema'= 'true' )
方法2:单引号内用反斜杠转义空格
如果坚持用单引号,在空格前添加反斜杠转义:
COPY INTO prod_gbs_gpdi.bronze_data.my_table FROM 'abfss://gpdi-files@hgbsprodgbsflastorage01.dfs.core.windows.net/RAW/AP\ Posted/' -- 其余代码保持不变
为什么%20替换无效?
Databricks的COPY INTO语句在解析路径时,会将%20当作路径的字面字符处理,而不会自动解码为空格,因此会找不到对应文件夹,这就是替换后仍报错的原因。
是否必须避免文件夹命名用空格?
不是必须,但建议尽量避免——空格容易引发路径解析类问题,增加调试成本。如果无法修改现有文件夹名称,使用上述两种方法即可正常执行导入操作。
内容的提问来源于stack exchange,提问作者Arnold Souza
相关产品推荐
相关产品推荐

