Azure 我们可以通过ADF将json数组解析并复制到多个sql表中吗

Azure 我们可以通过ADF将json数组解析并复制到多个sql表中吗,azure,azure-sql-database,azure-data-factory-2,Azure,Azure Sql Database,Azure Data Factory 2,我想使用azure数据工厂解析一些json数据,并将其复制到azure sql数据库中 客户数据,如下所示: { “客户ID”:125488, “名字”:“约翰”, “姓氏”:“史密斯”, “年龄”:25岁, “地址”:{ “街道地址”:“第二街21号”, “城市”:“纽约”, “州”:“纽约”, “postalCode”:“10021” }, “电话号码”:[ { “类型”:“主页”, “编号”:“212 555-1234” }, { “类型”:“传真”, “编号”:“646555-4567”

我想使用azure数据工厂解析一些json数据,并将其复制到azure sql数据库中

客户数据,如下所示:

{
“客户ID”:125488,
“名字”:“约翰”,
“姓氏”:“史密斯”,
“年龄”:25岁,
“地址”:{
“街道地址”:“第二街21号”,
“城市”:“纽约”,
“州”:“纽约”,
“postalCode”:“10021”
},
“电话号码”:[
{
“类型”:“主页”,
“编号”:“212 555-1234”
},
{
“类型”:“传真”,
“编号”:“646555-4567”
}
]
}
我的目标是将customerId、firstName、lastname和age放入customers表中,如下所示

创建表dbo.customer(
客户ID int,
名字叫瓦查尔(255),
姓氏varchar(255),
年龄智力
)
这部分我已经使用复制数据(api到sql)完成了。我的下一个目标是将电话号码放入电话号码表中,如下所示

创建表dbo.phonenumber(
客户ID int,
电话号码varchar(255)
电话类型varchar(255)
)

我使用管道中的复制活动将客户数据移动到客户表中,但我无法将多个输出写入不同的表。我们可以在一个管道中完成吗?

我认为您可以在复制活动中使用存储过程将数据复制到多个表中。
我创建了一个简单的测试,如下所示:

将ANSI_空值设置为ON
去
在上设置带引号的\u标识符
去
alter PROCEDURE[dbo].[USPCOUSTOMER]@json NVARCHAR(最大值)
作为
开始
插入dbo.customer(customerId、firstName、lastName、age)
选择customerId、firstName、lastName、age
来自OPENJSON(@json)
与(
customerId INT'$.customerId',
firstName VARCHAR(255)“$.firstName”,
lastName VARCHAR(255)$.lastName',
年龄整型“$.age”
);
插入dbo.phonenumber(customerId、phonenumber、phoneType)
选择customerId、电话号码、电话类型
来自OPENJSON(@json)
与(
customerId INT'$.customerId',
phoneNumber VARCHAR(255)$.phoneNumber[0].number',
phoneType VARCHAR(255)$.phoneNumber[0]。类型'
);
插入dbo.phonenumber(customerId、phonenumber、phoneType)
选择customerId、电话号码、电话类型
来自OPENJSON(@json)
与(
customerId INT'$.customerId',
phoneNumber VARCHAR(255)$.phoneNumber[1].number',
phoneType VARCHAR(255)$.phoneNumber[1]。类型'
);
结束
以下是对存储过程的测试

DECLARE@json-NVARCHAR(MAX);
SET@json='{“customerId”:125488,“firstName”:“John”,“lastName”:“Smith”,“age”:25,“address”:{“streetAddress”:“21第二街”,“city”:“New York”,“state”:“NY”,“postalCode”:“10021”},“phoneNumber”:[{“type”:“home”,“number”:“212 555-1234”},{“type”:“fax”,“number”:“646 555-4567”};};'
exec[dbo].[uspCustomer]@json
结果如下:


仅此而已。

我认为您可以在复制活动中使用存储过程将数据复制到多个表中。谢谢您的帮助!