将XML数据从SQL Server 2016 DB移动到Cosmos DB的最佳方法

时间:2018-02-16 17:29:15

标签: sql-server azure-cosmosdb sql-server-2016

拥有一个包含~10 GB数据的SQL Server 2016表。我必须将存储在该表中的XML数据在XML列中迁移到Cosmos DB。

这是一次性工作,迁移后这些数据将直接写入Cosmos DB(来自用C#编写的API)。

迁移此内容的最佳方法是什么?我知道有一个Azure Cosmos数据库迁移工具,但不知道如何使用它迁移XML列。还有其他更好的解决方案吗?

1 个答案:

答案 0 :(得分:0)

在SQL Server 2016中将Xml数据转换为JSON。它不应该是一项非常艰巨的任务。将其批量处理。

伪代码:

    DECLARE @xml XML = '<?xml version="1.0"?>
    <header>
       <rdms id="1">
          <sqlserver>MSSQL1</sqlserver>
       </rdms>
       <rdms id="1">
          <sqlserver>MSSQL2</sqlserver>
       </rdms>
       <rdms id="2">
          <oracle11g>cc11</oracle11g>
       </rdms>
     </header>''';

SELECT x.value('@id', 'nvarchar(MAX)') AS rdms
    ,x.value('sqlserver[1]', 'nvarchar(MAX)') AS [Server]
    ,x.value('oracle11g[1]', 'nvarchar(MAX)') AS [Oracle]
FROM @xml.nodes('/header/rdms') AS a(x)
FOR JSON AUTO

然后使用Cosmosdb Migration工具将JSON数据加载到CosmosDB ...

请阅读以下内容.. https://docs.microsoft.com/en-us/sql/t-sql/xml/nodes-method-xml-data-type