将分层SQL Server数据迁移到Azure CosmosDB

时间:2018-04-17 23:50:41

标签: sql-server azure-cosmosdb

我正在探索使用SQL API将数据从SQL Server 2016迁移到CosmosDB的选项。源数据是关系型的。我需要加入它们并以这样的方式迁移到CosmosDB数据库,即每行都作为文档迁移。这是一个例子。

Source Tables

我想迁移这些单独的Product表行,并将它的相关ProductSubCatalog表行与下面的文档类似。

{              
          "ProductID": 970,                         
          "Name": "Touring-2000 Blue, 46",                         
          "ProductNumber": "BK-T44U-46",                         
          "MakeFlag": true,                         
          "FinishedGoodsFlag": true,                       
          "Color": "Blue",                                                       
          "ModifiedDate": "2014-02-08T10:01:36.827",                   
          "ProductSubCatalog": {                
                       "ProductSubcategoryID": 3,                      
                       "Name": "Touring Bikes"                                                                                 
          }                          
}                          

我尝试DocumentDB Data Migration Tool使用Source作为“SQL”并使用以下查询。

SELECT 
    [ProductID],P.[Name], [ProductNumber], [MakeFlag],  
    [FinishedGoodsFlag], [Color], [SafetyStockLevel], [ReorderPoint], 
    [StandardCost], [ListPrice],
    Ps.ProductSubcategoryID AS 'ProductSubCatalog.ProductSubcategoryID', 
    Ps.Name AS 'ProductSubCatalog.Name'   
FROM
    [Production].[Product] P 
LEFT JOIN
    Production.ProductSubcategory PS ON P.ProductSubcategoryID = ps.ProductSubcategoryID
FOR JSON PATH, ROOT('Product')

由于上述查询为Product表中的所有行生成单个JSON数据,因此DocumentDB数据迁移工具将其作为单个文档导入。有没有人知道其他选项来实现这一点,而无需编写自定义应用程序来查询SQL Server数据,形成JSON文档并导入它?任何建议和指示将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据您的说明,我只是按照Import from SQL Server并根据您的表格来检查此问题。

enter image description here

enter image description here

注意:您无需在查询中添加FOR JSON PATH, ROOT('Product')

enter image description here

<强>结果:

enter image description here