You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Synapse无服务器SQL Pool读取CSV遇Unexpected Token错误求助

解决Synapse无服务器SQL池OPENROWSET解析CSV的转义字符问题

问题根源

你的CSV文件存在两个关键格式细节导致解析失败:

  • 字段分隔符是逗号加空格(, ),而非单纯逗号,默认配置会把空格误判为字段内容的一部分,引发解析异常
  • 第三行的\""是用反斜杠转义双引号,需要明确指定转义字符,同时配合正确的字段引号规则

修正后的查询语句

SELECT TOP 5 *
FROM OPENROWSET(
    BULK 'https://*******/empl.csv',
    FORMAT = 'CSV',
    PARSER_VERSION = '2.0',
    FIRSTROW = 2, -- 跳过表头行
    FIELDTERMINATOR = ', ', -- 匹配CSV实际的分隔符(逗号+空格)
    FIELDQUOTE = '"', -- 指定字段包裹符为双引号
    ESCAPECHAR = '\' -- 指定转义字符为反斜杠
) AS data

参数说明

  • FIELDTERMINATOR = ', ':精准匹配CSV中字段间的分隔符,避免空格被误解析为字段内容
  • FIELDQUOTE = '"':明确解析规则,字段值由双引号包裹,遇到双引号时结合转义字符处理
  • ESCAPECHAR = '\':指定反斜杠为转义字符,让\"被解析为单个双引号
  • FIRSTROW = 2:跳过第一行表头,防止表头被当作数据行解析

进阶:指定列结构(可选)

如果需要更精准的列映射和类型定义,可添加WITH子句:

SELECT TOP 5 *
FROM OPENROWSET(
    BULK 'https://*******/empl.csv',
    FORMAT = 'CSV',
    PARSER_VERSION = '2.0',
    FIELDTERMINATOR = ', ',
    FIELDQUOTE = '"',
    ESCAPECHAR = '\'
) WITH (
    empl_code INT,
    name VARCHAR(50),
    u_version VARCHAR(10)
) AS data

执行后即可得到你期望的解析结果:

empl_codenameu_version
123JOE SMITH!
124DAVE SMITHM
125BRIAN SMITH"

内容的提问来源于stack exchange,提问作者robertsmithfromthecure

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:52:11