拥有一个包含~10 GB数据的SQL Server 2016表。我必须将存储在该表中的XML数据在XML列中迁移到Cosmos DB。
这是一次性工作,迁移后这些数据将直接写入Cosmos DB(来自用C#编写的API)。
迁移此内容的最佳方法是什么?我知道有一个Azure Cosmos数据库迁移工具,但不知道如何使用它迁移XML列。还有其他更好的解决方案吗?
答案 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