azure-cosmosdb - 如何使用嵌套分隔符拆分为子文档?
问题描述
我正在通过 Azure cosmos DB 数据迁移工具将数据从 SQL 迁移到 COSMOS DB
有人可以帮忙迁移子文档中的数据,如何在嵌套分隔符中指定
SELECT TOP 5 P.ProjectDocumentId, P.ProjectId, PU.UpdatedByFullName
FROM [Docs].[ProjectDocuments] P
INNER JOIN [Docs].[ProjectDocumentUpdate] PU ON P.ProjectDocumentID = PU.ProjectDocumentID
WHERE P.ProjectDocumentId = '7DA0011B-7105-4B6C-AF13-12B5AC50B608'
Cosmos DB 中的预期文档:
{
"ProjectDocumentId": "7da0011b-7105-4b6c-af13-12b5ac50b608",
"ProjectId": "ed1e0e47-ff1c-47be-b5e9-c235aef76161",
"ProjectDocumentUpdate": {
"UpdatedByFullName" : "Unnati"
}, {
"UpdatedByFullName" : "Eugene"
},
{
"UpdatedByFullName" : "Meghana"
}
}
解决方案
根据您的描述,您的需要并不是简单地将嵌套的 JSON 数据生成到 cosmos db 中。您想要生成 JSON 包含由某些列组成的 Json 数组组。类似于UpdatedByFullName
通过相同ProjectDocumentId
和合并的东西ProjectId
。
根据我的测试和对迁移工具文档的一些研究,似乎Import data from SQL SERVER feature
无法处理某些列生成 json 数组组。
因此,我想出了一个由这种情况导致的解决方法:SQL to JSON - Grouping Results into JSON Array and this doc。我的示例数据如下:
SQL:
select s1.name,
'ageArr' = (
SELECT
age AS 'age'
FROM
dbo.student as s2
where s2.name = s1.name
FOR JSON PATH)
from dbo.student as s1
group by s1.name
FOR JSON Path;
输出如下:
然后你就有了这样的 json 输出,这样你就可以简单地将它导入 cosmos db。
推荐阅读
- tfs - VSTS/TFS 扩展小部件树组合
- python - 如何从python中的子进程返回一个值?
- laravel - 更新 Vuejs 列表
- php - 如何在 Laravel 中动态添加门?
- video - Safari 11 上的视频自动播放
- r - 以较粗的分辨率聚合栅格数据
- bash - 如何在没有手动配置的情况下使用 databricks-cli
- wordpress - 使用 wordpress 的 Chrome https 不安全
- scala - Gatling 用户按顺序注入
- javascript - $_FILE 将文件从 JS 传递到 0 字节的 PHP 脚本(使用 jQuery validate v1.14.0 和 jQuery v3.2.1)