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

ANSI文件在Synapse读取失败,求ADF转码或Synapse兼容方案

解决ANSI编码文件在Azure Synapse/Blob存储中读取失败的问题

方案1:ADF复制时直接转码为UTF-8

这是最省心的解决方式,让ADF在复制过程中自动完成编码转换:

  • 保持SFTP源数据集的编码配置为windows-1252(对应ANSI)
  • 把Blob目标数据集的编码改成UTF-8,不要和源编码一致
  • 重新运行复制活动,完成后Blob里的文件就是UTF-8编码,Synapse和Blob直接读取都不会报错

方案2:用ADF数据流处理转码(适合复杂场景)

如果复制活动的自动转码没生效(比如文件里有特殊字符),用数据流来处理:

  • 新建数据流,源连接SFTP的ANSI数据集(编码选windows-1252)
  • 不需要额外转换的话,直接加目标连接Blob的UTF-8数据集;如果需要清理特殊字符,加个「派生列」或「替换字符」转换处理
  • 运行数据流活动,转码后的文件就能正常被Synapse读取

方案3:Synapse读取时指定ANSI编码

如果不想转码,直接读取原始ANSI文件,要在读取语句里明确指定编码:

  • 使用OPENROWSET读取时,加上CODEPAGE = '1252'参数,示例代码:
SELECT *
FROM OPENROWSET(
    BULK 'https://yourstorageaccount.blob.core.windows.net/yourcontainer/yourfile.csv',
    FORMAT = 'CSV',
    CODEPAGE = '1252',
    FIRSTROW = 2 -- 如果有表头的话
) AS [result]
  • 如果是通过Synapse数据集读取,在数据集的文件格式设置里把编码改成windows-1252,同时确认分隔符、引号规则和文件完全匹配

方案4:排查特殊字符导致的报错

报错指向行19列6的无效值,大概率是该位置有ANSI特有的特殊字符(比如智能引号、非标准符号):

  • 下载文件到本地,用Notepad++定位到对应位置,查看具体字符
  • 在ADF里加个「替换字符」转换,把这些特殊字符替换成Synapse能识别的普通字符
  • 或者在Synapse读取时,用REPLACE函数处理该列的异常字符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:02:11