Share via


使用桌面資料移轉工具將資料遷移至 Azure Cosmos DB

適用於:NoSQL MongoDB Table

Azure Cosmos DB 桌面移轉工具是開放原始碼命令列應用程式,可從 Azure Cosmos DB 匯入或匯出資料。 此工具可以在許多來源和接收端之間遷移資料,包括但不限於:

  • 適用於 NoSQL 的 Azure Cosmos DB
  • Azure Cosmos DB for MongoDB
  • Azure Cosmos DB for Table
  • Azure 表格儲存體
  • JSON
  • MongoDB
  • SQL Server

重要

針對本指南,您將執行從 JSON 到 Azure Cosmos DB for NoSQL 的資料移轉。

必要條件

安裝桌面資料移轉工具

首先,從 GitHub 存放庫安裝最新版本的桌面資料移轉工具。

注意

桌面資料移轉工具需要本機電腦上具有 .NET 6.0 或更新版本。

  1. 在您的瀏覽器中,瀏覽至存放庫的 [版本] 區段:azurecosmosdb/data-migration-desktop-tool/releases

  2. 下載適用您平台的最新壓縮資料夾。 其中有適用於 win-x64mac-x64linux-x64 平台的壓縮資料夾。

  3. 將檔案解壓縮到本機電腦上的安裝位置。

  4. (選擇性) 將桌面資料移轉工具新增至本機電腦的 PATH 環境變數。

準備移轉目標

接下來,在 Azure Cosmos DB for NoSQL 帳戶上建立目標資料庫和容器。

  1. 開啟新終端。 如果您尚未登入,請先登入 Azure CLI

  2. 為 Azure Cosmos DB 帳戶的名稱和資源群組建立新的殼層變數。

    # Variable for Azure Cosmos DB account name
    accountName="<name-of-existing-account>"
    
    # Variable for resource group name
    resourceGroupName="<name-of-existing-resource-group>"
    
  3. 使用 az cosmosdb sql database create 建立新資料庫。 將新資料庫命名為 cosmicworks,並為資料庫設定 400 RU/秒的共用輸送量。

    az cosmosdb sql database create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --name cosmicworks \
        --throughput 400
    
  4. 使用 az cosmosdb sql container createcosmicworks 資料庫內建立名為 products 的新容器。 將新容器的分割區索引鍵路徑設定為 /category

    az cosmosdb sql container create \
        --resource-group $resourceGroupName \
        --account-name $accountName \
        --database-name cosmicworks \
        --name products \
        --partition-key-path "/category"
    
  5. 使用 az cosmosdb keys list,從帳戶的金鑰清單中尋找「主要連接字串」

    az cosmosdb keys list \
        --resource-group $resourceGroupName \
        --name $accountName \
        --type connection-strings
    
  6. 記下 [主要連接字串] 值。 稍後使用工具遷移資料時,會用到此認證。

執行移轉作業

現在,將資料從 JSON 陣列遷移至新建立的 Azure Cosmos DB for NoSQL 容器。

  1. 瀏覽至本機電腦上的空白目錄。 在該目錄中,建立名為 migrationsettings.json 的新檔案。

  2. 在 JSON 檔案中,建立新的空白 JSON 物件:

    {}
    
  3. 建立值為 json 且名為 Source 的新屬性。 建立另一個名為 SourceSettings 的新屬性,並以空物件當作其值。

    {
      "Source": "json",
      "SourceSettings": {}
    }
    
  4. SourceSettings 物件中,建立名為 FilePath 的新屬性,並將值設定為此 URI:https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json

    {
      "Source": "json",
      "SourceSettings": {
        "FilePath": "https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json"
      }
    }
    
  5. 建立另一個值為 cosmos-nosql 且名為 Sink 的新屬性。 此外,建立名為 SinkSettings 的屬性,並使用空物件。

    {
      "Source": "json",
      "SourceSettings": {
        "FilePath": "https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json"
      },
      "Sink": "cosmos-nosql",
      "SinkSettings": {
      }
    }
    
  6. SinkSettings 中,建立名為 ConnectionString 的屬性,並以您稍早在本指南中記下的「主要連接字串」作為其值。

    {
      "Source": "json",
      "SourceSettings": {
        "FilePath": "https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json"
      },
      "Sink": "cosmos-nosql",
      "SinkSettings": {
        "ConnectionString": "<connection-string-for-existing-account>"
      }
    }
    
  7. 新增 DatabaseContainerPartitionKeyPath 屬性,並分別以 cosmicworksproducts/category 作為其值。

    {
      "Source": "json",
      "SourceSettings": {
        "FilePath": "https://raw.githubusercontent.com/azure-samples/cosmos-db-migration-sample-data/main/nosql-data.json"
      },
      "Sink": "cosmos-nosql",
      "SinkSettings": {
        "ConnectionString": "<connection-string-for-existing-account>",
        "Database": "cosmicworks",
        "Container": "products",
        "PartitionKeyPath": "/category"
      }
    }
    
  8. 儲存migrationsettings.json 檔案。

  9. 開啟新的終端,並瀏覽至包含您 migrationsettings.json 檔案的目錄。

  10. 使用 dmt 命令執行桌面資料移轉工具。

    dmt
    

    注意

    如果您未將安裝路徑新增至 PATH 環境變數,您可能需要指定 dmt 可執行檔的完整路徑。

  11. 此工具現在會輸出移轉所使用的來源和接收端。

    Using JSON Source
    Using Cosmos-nosql Sink