繁体   English   中英

将 JSON 数据从 Azure SQL DB 迁移到 Cosmos DB 结果为字符串值

[英]Migrate JSON data from Azure SQL DB to Cosmos DB results in string values

我正在尝试使用 CosmosDB 数据迁移工具从 SQL DB 迁移数据,我成功地从 SQL DB 迁移了数据,但结果是所有值都是字符串

想知道是否有办法在迁移过程中将这些 JSON 转换为 Object?

这是我的示例查询

select 
       json_value(Data, '$.timestamp') as timestamp,
       json_query(Data, '$.Product.detail') as [Product.detail],
       json_value(Data, '$.Product.price') as [Product.price]

from myTable

嵌套分隔符:.

一种选择是将您的 SQL 数据导出为纯 CSV 文件,使用您喜欢的工具进行任何重新格式化,然后使用 Cosmos 迁移工具导入清理过的 CSV 或 JSON 文件。

例如,使用 PowerShell,该过程可能是:

  1. 将 SQL 数据导出为 CSV
  2. 使用 PowerShell Import-CSV以自定义对象数组的形式读取数据
  3. 使用 PowerShell 修改内存中的自定义对象以转换类型、重新格式化、验证等
  4. 使用Export-CSVConvertTo-Json将清理后的数据导出回 CSV 或 JSON
  5. 使用 Cosmos 数据迁移工具导入清理后的文件

1.创建数据流并使用 SQL DB 作为源。

2.在源选项中选择Query

查询语句:

select 
       json_value(Data, '$.timestamp') as timestamp,
       json_query(Data, '$.Product.detail') as [Product.detail],
       json_value(Data, '$.Product.price') as [Product.price]

from test3

在此处输入图片说明

3.创建一个DerivedColumn ,并改变列的类型。 Product

@(detail=split(replace(replace(replace(byName('Product.detail'),'[',''),']',''),'"',''),','),
        price=toDouble(byName('Product.price')))

在此处输入图片说明

4. 选择 Cosmos DB 作为接收器并进行映射,如下所示:

在此处输入图片说明

5.创建管道并添加之前创建的数据流,然后单击调试按钮或添加触发器以执行它。 在此处输入图片说明

6.结果:

{
     "Product": {
        "price": 300.56,
        "detail": [
            "eee",
            "fff"
        ]
    },
    "id": "d9c66062-63ce-4b64-8bbe-95dcbdcad16d",
    "timestamp": 1600329425
}

更新:

您可以启用数据流调试按钮,并在数据预览中查看表达式的结果。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM