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 Table Storage
  • JSON
  • MongoDB
  • SQL Server

重要

このガイドでは、JSON から Azure Cosmos DB for NoSQL へのデータ移行を実行します。

前提条件

デスクトップ データ移行ツールをインストールする

まず、GitHub リポジトリから最新バージョンのデスクトップ データ移行ツールをインストールします。

Note

デスクトップ データ移行ツールでは、ローカル コンピューターに .NET 6.0 以降が必要です。

  1. ブラウザーで、リポジトリの [Releases] セクション (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 create を使用して、cosmicworks データベース内に 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. 名前が Source で値が json の新しいプロパティを作成します。 名前が 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. 名前が Sink で値が cosmos-nosql の別の新しいプロパティを作成します。 また、空の オブジェクトを持つ 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
    

    Note

    PATH 環境変数にインストール パスを追加しなかった場合は、dmt 実行可能ファイルへの完全なパスを指定する必要がある場合があります。

  11. ツールでは、移行で使用するソースとシンクが出力されます。

    Using JSON Source
    Using Cosmos-nosql Sink