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

如何通过ADF将SQL Server表中XML列的文档迁移至Azure Blob存储

使用Azure Data Factory把SQL Server XML列数据迁移到Azure Blob Storage

1. 先搞定数据源(SQL Server)

  • 在ADF里新建链接服务,选SQL Server类型,填好服务器名、数据库名,选合适的认证方式(SQL认证或者AD认证都行),测试连接通了再下一步。
  • 创建数据集,关联刚才的链接服务,选中你存XML列的那张表,记好XML列的名字(比如XmlContent)。

2. 配置目标端(Azure Blob Storage)

  • 新建Blob Storage的链接服务,选对应的存储账户,测试连接确保没问题。
  • 创建数据集,选Blob类型,指定存储容器和文件夹路径,文件格式选Text Format(毕竟要导出纯XML内容),文件名可以用动态内容生成,比如@concat('xml_', pipeline().RunId, '.xml'),或者后面按行生成单个文件的时候再改。

3. 搭数据流水线

方案A:导出成单个XML文件

如果要把所有行的XML内容合并到一个文件:

  • 加个复制活动,源选SQL Server数据集,自定义SQL查询只拿XML列:
    SELECT XmlContent FROM YourTableName
    
    注意:ADF默认会把XML当字符串导出,只要映射对了,目标文件就是纯XML内容。
  • 目标选Blob数据集,去复制活动的映射标签,确认XML列和目标文件的内容字段对应上。

方案B:每行生成单独的XML文件

要是需要每行的XML列存成单独文件:

  • 加个查找活动,源是SQL Server数据集,写查询把每行的唯一标识(比如ID)和XML内容都拿出来:
    SELECT Id, XmlContent FROM YourTableName
    
  • 加个For Each活动,遍历查找活动的输出,表达式填:
    @activity('LookupXMLData').output.value
    
  • 在For Each里面嵌套复制活动:
    • 源选Inline Dataset(临时数据集),类型是SQL Server,查询过滤当前行:
      SELECT XmlContent FROM YourTableName WHERE Id = @item().Id
      
    • 目标Blob数据集的文件名设成动态内容:
      @concat('xml_file_', @item().Id, '.xml')
      
    • 复制活动的行为按需选“覆盖”或者“追加”就行。

4. 测试跑起来

  • 先调试流水线,看看Blob里生成的文件对不对,XML内容有没有损坏、缺漏。
  • 没问题的话,设置触发器(按需手动跑或者定时调度)就行。

踩坑提醒

  • 如果XML内容特别大,记得分批次处理,别把内存撑爆了。
  • 确保SQL Server和Blob Storage能连通,比如用VNet集成或者开公网访问权限。
  • 要是XML列有特殊字符,确认ADF的编码是UTF-8(默认就是,一般没问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:20:23