【问题标题】:How to split into Sub Documents with Nesting separator?如何使用嵌套分隔符拆分为子文档?
【发布时间】:2020-02-11 12:55:01
【问题描述】:

我正在通过 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" 
  }             
} 

【问题讨论】:

    标签: azure-cosmosdb azure-cosmosdb-sqlapi


    【解决方案1】:

    根据您的描述,您的需要并不是简单地将嵌套的 JSON 数据生成到 cosmos db 中。您想生成 JSON 包含由某些列组成的 Json 数组组。类似于将 UpdatedByFullName 合并为同一 ProjectDocumentIdProjectId

    根据我的测试和对Migration Tool document 的一些研究,Import data from SQL SERVER feature 似乎无法处理某些列生成 json 数组组。

    所以,我想出了一个由这种情况导致的解决方法:SQL to JSON - Grouping Results into JSON Array 和这个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了。

    【讨论】:

    • 感谢 @Jay 提出这么好的主意
    猜你喜欢
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    相关资源
    最近更新 更多