簡體   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