【问题标题】:Azure Synapse 无服务器 SQL 池 - 从引用字段中选择时出错
【发布时间】:2022-01-23 16:36:32
【问题描述】:

在 Azure Synapse 中使用 Serverless/OnDemand SQL Pool 从包含引用字段的 CSV 文件中进行选择时出现错误。数据在字段中包含字段终止符 (,),但它用双引号引起来。即使我在数据中使用默认引号,我什至尝试明确指定 FIELDQUOTE。

我的文件包含如下数据

"number", "text"
1, "one"
2, "two"
11, "one, one"
12, "one, two"

我运行的SQL如下

SELECT
    *
FROM
    OPENROWSET(
        BULK 'https://mydatalake.dfs.core.windows.net/data/test_quoted_fields.csv',
        FORMAT = 'CSV',
        PARSER_VERSION = '2.0',
        FIELDQUOTE = '"',
        FIELDTERMINATOR = ',',
        HEADER_ROW = TRUE
    ) AS [result]

错误信息如下

Error handling external file: 'Quotes '' must be inside quoted fields at [byte: 10]. '. File/External table name: 'https://mydatalake.dfs.core.windows.net/data/test_quoted_fields.csv'

请注意,我正在使用 Serverless/OnDemand SQL Pool 运行查询。

有人可以帮忙吗?谢谢

ADLS 门户中的数据如下所示 处于编辑模式

处于预览模式

【问题讨论】:

    标签: azure azure-synapse


    【解决方案1】:

    我似乎在 excel 中包含 .csv 并在上传到 ADLS 后会在引用字段周围添加额外的“”,以便被视为字符串。而且它似乎运作良好。

    【讨论】:

    • 感谢 Karthik 调查。我错过了这里帖子中的逗号。代码确实有逗号,否则我会遇到语法错误。我添加了一个屏幕截图,其中包含我正在运行的语句(包括逗号)以及错误。奇怪的是,这对你有用。你可以提出任何建议。我正在使用 macbook,文件也是在 mac 中创建的。
    • 你可以尝试在adls门户中预览csv,看看结构是否正确
    • 是的,门户中的数据对我来说看起来不错。我刚刚在上面的问题中添加了编辑和预览模式的屏幕截图。再次感谢您对此进行调查。
    • 我想我只是在几秒钟前的复制过程中发现,现在更新答案?
    • 感谢您为我指明正确的方向。问题是逗号后两列之间的额外空格。删除额外的空间解决了这个问题。谢谢!
    猜你喜欢
    • 2021-06-06
    • 2021-12-20
    • 2021-05-28
    • 2021-10-31
    • 2021-10-08
    • 2023-02-17
    • 2021-10-04
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多