如何通过Azure Data Factory将REST API的JSON输出存入SQL Server单列?
这个需求其实很容易实现,调整一下Azure Data Factory里复制活动的配置就行,不用依赖后续查询拆分——直接在ADF里就能把tickets数组的每个对象转成JSON字符串存到SQL Server的单列里。我给你一步步拆解具体操作:
1. 先准备SQL Server目标表
首先在你的SQL Server里创建一个用于存储JSON字符串的表,推荐用NVARCHAR(MAX)类型(比TEXT更灵活,支持Unicode):
CREATE TABLE TicketData ( TicketJson NVARCHAR(MAX) NOT NULL )
2. 配置REST源的复制活动
- 在ADF中创建复制活动,源选择你已配置好的REST数据集,确保API能返回结构正确的JSON(就是你提到的包含
tickets数组的格式)。 - 切换到复制活动的源选项卡,找到
Collection reference,填入$.tickets——这个设置会让ADF自动遍历tickets数组里的每个对象,把每个对象作为单独的一行数据处理。
3. 配置映射/转换器(两种可选方式)
方式一:用TabularTranslator的schemaMapping(适合代码化配置)
直接在复制活动的设置选项卡中,找到Translator,替换成以下配置:
"translator": { "type": "TabularTranslator", "schemaMapping": { "$": "TicketJson" }, "collectionReference": "$.tickets" }
- 这里的
$代表当前遍历到的每个tickets数组对象,TicketJson是你目标表的列名。 - 只要目标列是
NVARCHAR(MAX)类型,ADF会自动把整个JSON对象序列化成字符串存入该列。
方式二:手动配置映射(更直观,适合可视化操作)
- 进入复制活动的映射选项卡,点击导入架构(ADF会自动读取
tickets对象的结构,但我们不需要拆分的列)。 - 删除所有自动生成的映射,点击添加映射。
- 在源列选择表达式,输入
@string($)——这个表达式会把当前的ticket对象完整转换成JSON格式的字符串。 - 在接收器列选择你目标表的
TicketJson列。
4. 测试运行
保存配置后触发复制活动,运行完成后去SQL Server查询TicketData表,就能看到tickets里的每个对象都作为单独一行的JSON字符串存在TicketJson列里了。
注意事项
- 确保REST API返回的JSON没有语法错误,否则ADF可能无法正确解析
tickets数组。 - 如果
tickets对象有嵌套结构,@string($)会完整保留所有嵌套层级,不会丢失数据。 - 优先用
NVARCHAR(MAX)而不是TEXT存储JSON,TEXT是SQL Server的过时类型,NVARCHAR(MAX)更适合现代JSON场景。
内容的提问来源于stack exchange,提问作者ferdyh
相关产品推荐
相关产品推荐

