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

Azure Data Factory复制CSV至SQL时添加额外列遇错求助

问题解决步骤

1. 修复CSV列解析错误(核心问题)

报错的直接原因是CSV里的cast/crew列包含嵌套JSON,JSON中的逗号被默认当成列分隔符,导致解析出的列数远超预期。解决方式:

  • 打开ADLS Gen2源数据集的Delimited Text格式配置:
    • 设置Text qualifier为"(双引号),确保CSV中包含嵌套JSON的列是用双引号包裹的(若原CSV未添加,需先处理文件或导出时补充)。
    • 确认Column count设置为CSV实际的列数(比如SQL表列数减去新增的2列,假设是3列则填3)。
    • 若CSV里的JSON有转义需求,可设置Escape character为\。
  • 配置完成后点击数据集的Preview,确认所有列能正确识别,无列被拆分的情况。

2. 正确添加额外列并完成映射

方式一:通过Source的Additional columns添加

在Copy Activity的Source标签页,点击Additional columns添加两行:

  • 第一行:列名填pipelineid,值填表达式 @pipeline().PipelineId
  • 第二行:列名填source_filename,值填表达式 @split(pipeline().parameters.filePath, '/')[sub(length(split(pipeline().parameters.filePath, '/')),1)](若通过参数传递文件路径),或直接用@dataset().FileName(单文件数据集场景)
  • 切换到Copy Activity的Mapping标签页,确保新增的两列与目标SQL表的pipelineid、source_filename列正确映射,其余CSV列也对应到目标表的对应列。

方式二:直接在Sink映射中赋值(更直观)

无需在Source里加额外列,直接在Copy Activity的Mapping标签页操作:

  • 找到目标表的pipelineid列,点击映射值输入框,选择Add dynamic content,输入@pipeline().PipelineId
  • 找到source_filename列,同样添加动态内容,比如@activity('Copy Data').Input.FileName(获取当前复制的文件名)
  • 确保其他CSV列与目标表列一一映射。

3. 验证并调试

  • 保存配置后触发管道调试,若仍有错误,检查:
    • 目标SQL表的列类型是否与源CSV列匹配(比如嵌套JSON列需设为NVARCHAR(MAX))
    • 列映射是否完全对应,无遗漏或多余项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 12:37:32