Azure数据工厂将JSON复制到表中的行

时间:2020-10-06 13:10:21

标签: json azure azure-data-factory

我有一个有效的ADF工作流,它使用For Each循环从GET API调用中复制数据,每次都基于查找JSON文件更改查询字符串,并将单独的文件另存为JSON文件到BLOB存储中。我有一个问题-是否可以使用(id,timestamp,filename,json)结构将该数据加载到SQL表中,这意味着将每个API调用结果存储在该表中的新的单独行中?我无法将字段映射到SQL最终表,因为我无法使用简单的item()。File或获取现在存储在容器中的JSON文件的内容。

1 个答案:

答案 0 :(得分:0)

您可以使用“存储过程”活动将json对象沉入一列。

我在这里做了一个简单的测试:

1。我使用Lookup活动从rest api获取json数组。

enter image description here

  1. 我在Azure SQL中创建sql表和存储过程:
create table dbo.Logs (
    _id bigint primary key IDENTITY(1,1),
    log nvarchar(max)
);

--Strored procedure
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[spUpsertLogs]

@logs nvarchar(max)

AS

BEGIN

INSERT INTO dbo.Logs (log) values(@logs)

END

3。然后,我设置Stroed过程活动,指定Stroed过程的名称和导入参数,使用表达式@string(activity('Lookup1').output.value)将json数组转换为String类型。

enter image description here

4。运行debug,将json数组复制到sql表的一列中。结果显示:

enter image description here

希望我的回答对您有所帮助。将JSON文档存储在SQL Server中,您可以引用here