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

如何用Synapse Analytics管道预复制脚本将Blob数据追加至SQL表

解决Synapse Copy Data活动追加Blob数据到SQL表的问题

错误原因分析

  • 使用TRUNCATE TABLE a.Table作为预复制脚本会清空表数据,这是TRUNCATE的固有行为,完全不符合追加需求。
  • INSERT INTO a.Table SELECT * FROM folder/x.csv报错是因为预复制脚本是在SQL端执行的纯SQL语句,SQL Server/Synapse SQL无法直接通过这种语法读取Blob存储中的CSV文件,语法不兼容导致解析错误(错误码103010)。

正确实现方式(无需预复制脚本)

Synapse的Copy Data活动本身原生支持追加写入,根本不需要自定义预复制脚本:

  1. 打开Copy Data活动的Sink配置选项卡
  2. 在Write behavior(写入行为)下拉列表中,选择Append(针对Synapse SQL池,选项名称可能显示为Append to existing table)
  3. 确认源Blob文件和目标SQL表的列映射完全匹配,数据类型兼容
  4. 保存并运行管道,即可将Blob文件的数据追加到现有SQL表,完全保留原有数据

特殊场景的预复制脚本(可选)

如果需要在追加前做预处理(比如删除目标表中与待导入数据重复的记录),可以编写针对性的SQL作为预复制脚本,例如:

-- 假设用ID列去重,需提前配置Blob外部数据源
DELETE FROM a.Table 
WHERE ID IN (SELECT ID FROM OPENROWSET(
    BULK 'folder/x.csv',
    DATA_SOURCE = 'YourBlobDataSource',
    FORMAT = 'CSV'
) AS SourceData)

注:使用OPENROWSET需要先在Synapse SQL池中配置外部数据源和外部文件格式,仅适用于Synapse SQL池场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:33:20