ADF 将 json 数据推送到 SQL

ADF push json data to SQL

我有一个 adf 管道从 API 获取数据并将其作为 json 存储到 blob 存储。接下来,我使用查找从 blob 中获取相同的 json 数据。使用 foreach 和 filter 我在过滤的 json 中得到了一些特定的内容。现在我需要将这个过滤后的数据插入到数据库中。有没有办法将过滤后的数据复制到数据库?

更新:

输入json数组也是一样的过程。如下所示:

我的输入是 [{\"customerId\":100001,\"cutomerName\":\"Tom\"},{\"customerId\":100002,\"cutomerName\":\"John\"},{\"customerId\":100003,\"cutomerName\":\"Tinny\"}],我可以在我的 Azure SQL 中看到 3 条记录。


我在这里使用 Lookup activity 获取一个 json 对象并通过存储过程 activity.

将其复制到 azure SQL
  1. 这是我的 json 类型查询输出 activity。
    "firstRow": {
        "customerId": 100001,
        "cutomerName": "Tom"
    }

  1. 在 Azure sql 中,我们可以创建一个 table 和一个存储过程。
--1. create table
create table dbo.CustomerInfo(
customerId INT,
cutomerName varchar(50)
)

--2. create stored procedure
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


CREATE PROCEDURE [dbo].[uspCustomerInfo] @json NVARCHAR(MAX)
AS 
begin
    INSERT INTO dbo.CustomerInfo(customerId,cutomerName) 
        SELECT customerId,cutomerName
        FROM OPENJSON(@json,N'$')
            WITH (
            customerId INT N'$.customerId',
            cutomerName VARCHAR(255) N'$.cutomerName'
            );
end
  1. 在存储过程activity设置中,我们应该通过@string(activity('Lookup1').output.firstRow)将json转换为字符串。

  2. 这是我输入的存储过程activity。

  3. 这是我的调试结果:

  4. 如果您面对更复杂的 json 对象,您可以参考这个 doc.