gpt4 book ai didi

azure - 使用 COPY INTO 和 Azure Databricks 处理 abfss 中的空格

转载 作者:行者123 更新时间:2023-12-03 06:48:05 25 4
gpt4 key购买 nike

我正在尝试使用 Databricks 中的 COPY INTO 语句从 Cloud Storage 提取 CSV 文件。

问题是文件夹名称中有空格/AP Posted/,当我尝试引用路径时,代码执行会引发以下错误:

Error in SQL statement: URISyntaxException: Illegal character in path at index 70: abfss://gpdi-f[email protected]/RAW/AP Posted/

我用 google 搜索了该错误,发现建议用“%20”替换空格的文章。该解决方案无效。

请问有人知道怎么解决吗?或者唯一的解决方案确实是防止命名文件夹中出现空格。

这是我当前的 Databricks SQL 代码:

COPY INTO prod_gbs_gpdi.bronze_data.my_table
FROM 'abfss://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a2c5d2c6cb8fc4cbcec7d1e2cac5c0d1d2d0cdc6c5c0d1c4cec3d1d6cdd0c3c5c792938cc6c4d18cc1cdd0c78cd5cbccc6cdd5d18cccc7d6" rel="noreferrer noopener nofollow">[email protected]</a>/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', --Whether to infer the schema across multiple files and to merge the schema of each file
'encoding'='UTF-8',
'enforceSchema'='true', --Whether to forcibly apply the specified or inferred schema to the CSV files
'ignoreLeadingWhiteSpace'='true',
'ignoreTrailingWhiteSpace'='true',
'mode'='PERMISSIVE' --Parser mode around handling malformed records
)
COPY_OPTIONS (
'force' = 'true', --If set to true, idempotency is disabled and files are loaded regardless of whether they’ve been loaded before.
'mergeSchema'= 'true' --If set to true, the schema can be evolved according to the incoming data.
)

最佳答案

尝试使用其中一个文件夹有空间的路径,出现相同的错误。

enter image description here

  • 要解决此问题,您可以在 PATTERN 参数中指定文件夹,如下所示:
%sql
COPY INTO table1
FROM '/mnt/repro/op/'
FILEFORMAT = csv
PATTERN='has space/sample1.csv'
FORMAT_OPTIONS ('mergeSchema' = 'true','header'='true')
COPY_OPTIONS ('mergeSchema' = 'true');

enter image description here

  • 或者,将路径指定为 path/has?space/ 也可以。但如果有多个文件夹,例如 has space、hasAspace、hasBspace 等,那么这将无法按预期工作。
%sql
COPY INTO table2
FROM '/mnt/repro/op/has?space/'
FILEFORMAT = csv
PATTERN='sample1.csv'
FORMAT_OPTIONS ('mergeSchema' = 'true','header'='true')
COPY_OPTIONS ('mergeSchema' = 'true');

enter image description here

  • 另一种选择是使用 dbutils.fs.cp() 将文件复制到 dbfs,然后使用 dbfs 路径来使用 COPY INTO
dbutils.fs.cp('/mnt/repro/op/has space/sample1.csv','/FileStore/tables/mycsv.csv')

%sql
COPY INTO table3
FROM '/FileStore/tables/'
FILEFORMAT = csv
PATTERN='mycsv.csv'
FORMAT_OPTIONS ('mergeSchema' = 'true','header'='true')
COPY_OPTIONS ('mergeSchema' = 'true');

enter image description here

关于azure - 使用 COPY INTO 和 Azure Databricks 处理 abfss 中的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73950317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com