解决Azure Data Factory中XML文件整段存入SQL Server单个单元格问题
解决Azure Data Factory将整段XML存入SQL单个单元格的问题
是的,必须先解析XML结构再写入SQL Server——ADF的复制活动默认会把未解析的XML当作单一文本值处理,直接映射就会存入单个单元格。结合你遇到的集合引用下拉为空的问题,按以下步骤调整:
1. 正确配置XML数据集(核心解决集合引用为空的问题)
集合引用下拉为空,是因为XML数据集没有识别到可拆分的集合节点,需要手动指定或导入架构:
- 创建/编辑XML数据集,连接到Archer SOAP API返回的数据源
- 在格式设置中,填写XML的
根节点和集合节点(XPath路径):
比如你的XML结构是:
则根节点填return (<ArcherResponse><Records><Record><ID>1</ID><Title>Sample</Title></Record></Records></ArcherResponse> )ArcherResponse,集合节点填ArcherResponse/Records/Record - 如果自动导入架构失败,手动在数据集的结构 tab添加对应字段(如ID、Title),匹配XML中的元素名
2. 调整复制活动的映射
- 重新打开复制活动的映射界面,此时源端会显示解析后的XML字段(而非单一XML文本)
- 将这些字段一一映射到SQL Server表的对应列即可
3. 复杂XML结构的处理方案
如果你的XML存在多层嵌套或多集合结构,复制活动的简单映射无法满足需求,改用数据流动(Data Flow):
- 源节点选择XML格式,配置根节点和集合节点拆分XML为行数据
- 使用
派生列、展开等转换操作提取嵌套层级的字段 - 最后用Sink节点将处理后的数据写入SQL Server
手动修复数据集的集合引用(高级操作)
如果可视化界面无法设置集合节点,直接在数据集的高级编辑器中修改JSON配置:
"typeProperties": { "location": { "type": "HttpServerLocation", "relativeUrl": "/your-archer-soap-api-endpoint" }, "structure": [ { "name": "ID", "type": "String" }, { "name": "Title", "type": "String" } ], "rootNode": "ArcherResponse", "collectionReference": "ArcherResponse/Records/Record" }
内容的提问来源于stack exchange,提问作者Synik
相关产品推荐
相关产品推荐

