json - 如何将数据从 CosmosDB 中的文档传输到 Azure SQL 数据库?
问题描述
我正在尝试设置一个系统,每次我的 Cosmos DB 存储中有一个新文件时都会触发我的 Azure 函数(Cosmos DB 触发器),我的目标是从文件中获取传入的数据,并将其发送到我的Azure SQL,因此我可以根据它制作实时 Power BI 报告。我对整个过程有一些疑问,如果有人可以提供帮助,我将不胜感激,因为我对我在 Microsoft 文档上阅读的大量信息(相关和不相关)感到困惑。
- 我需要在我的 Azure SQL 数据库中创建一个与 json 数据对应的表吗?就像我已经准备好表格模板还是自动进行转换?
- 对于这种情况,当我制作 Azure 函数时,是否需要输入/输出绑定?我自己的理解是我不需要任何绑定,但我不确定。
- 我可以从文档中选择要传输到 SQL 的数据吗?或者我只能说应该将整个数据转移到 SQL 数据库中?
- 这种任务的命令/代码是什么?例如,如果我想说将这些数据(或整个文档,给它是一个 json 文件)传输到 SQL 数据库。
- 我没有找到有关此特定任务的任何文档,因此,如果你们中的任何人可以向我发送该链接的链接,我也将不胜感激。
- 为了使 azure 函数位于 Cosmos DB 和 Azure SQL 数据库之间,我显然需要在我的 azure 函数设置中包含一个集合/集合名称,但我不知道那是什么,当你创建它时在 Azure 上创建 Cosmos DB?
我知道这是太多的问题,但我宁愿一次问他们,而不是提出几个话题。也许这些信息已经存在,但由于我是这个领域的新手并且也是编码的新手,所以我发现自己很快就迷路了,我不确定我是否正在查看正确的信息/文档/视频教程。
提前致谢。
解决方案
你的描述很详细,我试图涵盖你所有的问题。
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 时?
要使用我的场景,您需要创建临时集合。复制活动执行后,您需要清空它。我建议您每天运行该作业,以便您可以清空昨天的数据。
推荐阅读
- java - 带引用链的 JPA 复合主键
- css - 在使用滚动捕捉时实现页脚
- visual-studio-code - VScode自定义集成终端不显示输出中的所有路径
- javascript - 如何在 vuetify 的 v-combobox 中使用 no-data-text 道具?
- javascript - 麦克风在应用程序中被禁用/不工作(从网站转换)
- jquery - DataTables - 我不想一次加载所有数据?
- c# - C# 填充列表
使用来自另一个类的字符串和默认构造函数 - c# - AssemblyLoadContext 加载和卸载在不同的函数中得到不同的结果
- selenium - Selenium 测试用例卡在构建代理中。如何解决?
- python - 我正在尝试将一个数字分配给一年中的一个月,它应该使用 if 语句而不是字典