首页 > 解决方案 > 如何将数据从 CosmosDB 中的文档传输到 Azure SQL 数据库?

问题描述

我正在尝试设置一个系统,每次我的 Cosmos DB 存储中有一个新文件时都会触发我的 Azure 函数(Cosmos DB 触发器),我的目标是从文件中获取传入的数据,并将其发送到我的Azure SQL,因此我可以根据它制作实时 Power BI 报告。我对整个过程有一些疑问,如果有人可以提供帮助,我将不胜感激,因为我对我在 Microsoft 文档上阅读的大量信息(相关和不相关)感到困惑。

  1. 我需要在我的 Azure SQL 数据库中创建一个与 json 数据对应的表吗?就像我已经准备好表格模板还是自动进行转换?
  2. 对于这种情况,当我制作 Azure 函数时,是否需要输入/输出绑定?我自己的理解是我不需要任何绑定,但我不确定。
  3. 我可以从文档中选择要传输到 SQL 的数据吗?或者我只能说应该将整个数据转移到 SQL 数据库中?
  4. 这种任务的命令/代码是什么?例如,如果我想说将这些数据(或整个文档,给它是一个 json 文件)传输到 SQL 数据库。
  5. 我没有找到有关此特定任务的任何文档,因此,如果你们中的任何人可以向我发送该链接的链接,我也将不胜感激。
  6. 为了使 azure 函数位于 Cosmos DB 和 Azure SQL 数据库之间,我显然需要在我的 azure 函数设置中包含一个集合/集合名称,但我不知道那是什么,当你创建它时在 Azure 上创建 Cosmos DB?

我知道这是太多的问题,但我宁愿一次问他们,而不是提出几个话题。也许这些信息已经存在,但由于我是这个领域的新手并且也是编码的新手,所以我发现自己很快就迷路了,我不确定我是否正在查看正确的信息/文档/视频教程。

提前致谢。

标签: jsonazuretriggersazure-sql-databaseazure-cosmosdb

解决方案


你的描述很详细,我试图涵盖你所有的问题。

1.我需要在我的Azure SQL数据库中建立一个与json数据对应的表吗?就像我已经准备好表格模板还是自动进行转换?

是的,您需要在 cosmos db 集合中创建一个与 json 格式对应的表。它不会自动发生。

2.这样的场景,我做Azure函数的时候,需要输入输出绑定吗?我自己的理解是我不需要任何绑定,但我不确定。

不,您不需要配置输入和输出绑定。只需要您的 cosmos db 配置,例如数据库名称、集合名称。请参考此示例

3.我可以从文档中选择哪些数据要传输到SQL吗?或者我只能说应该将整个数据转移到 SQL 数据库中?

直到这个问题,我想根据您的要求为您提供我的建议。您可以按照以下步骤操作:

a. 使用 Azure Function Cosmos Db Trigger 监控集合中添加或更新的文档。

b.在上述功能中,您需要收集传入的文档,然后使用 cosmos db sdk 将它们保存到新的集合中。(现在称为临时集合)

c.重点来了,使用Azure 数据工厂复制活动将临时集合中的数据复制到 sql 数据库中。请参考以下文档:

https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-cosmos-db

https://docs.microsoft.com/en-us/azure/data-factory/connector-azure-sql-database

回到第三个问题,是的,你可以。你可以设置查询设置来过滤源数据。

4.这样的任务的命令/代码是什么?例如,如果我想说将这些数据(或整个文档,给它是一个 json 文件)传输到 SQL 数据库。

可以使用 sdk 或 powershell 调用 Azure 数据工厂复制活动。请参阅此文档

5.我没有找到任何关于这个特定任务的文档,所以如果你们中的任何人可以给我一个链接,我也将不胜感激。

在以上观点中找到答案。

6.为了使 azure 函数位于 Cosmos DB 和 Azure SQL 数据库之间,我显然需要在我的 azure 函数设置中包含一个集合/集合名称,但我不知道那是什么,是否需要创建在 Azure 上创建 Cosmos DB 时?

要使用我的场景,您需要创建临时集合。复制活动执行后,您需要清空它。我建议您每天运行该作业,以便您可以清空昨天的数据。


推荐阅读