![](/img/trans.png)
[英]Azure function cosmos db sql query with ARRAY CONTAINS on string array
[英]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 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.