デスクトップ データ移行ツールを使用して 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 へのデータ移行を実行します。
前提条件
- 既存の Azure Cosmos DB for NoSQL アカウント。
- Azure サブスクリプションをお持ちの場合は、新しいアカウントを作成します。
- Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。
- または、コミットする前に Azure Cosmos DB を無料で試すこともできます。
- Azure CLI の最新バージョン。
- .NET 6.0 以降。
デスクトップ データ移行ツールをインストールする
まず、GitHub リポジトリから最新バージョンのデスクトップ データ移行ツールをインストールします。
Note
デスクトップ データ移行ツールでは、ローカル コンピューターに .NET 6.0 以降が必要です。
ブラウザーで、リポジトリの [Releases] セクション (azurecosmosdb/data-migration-desktop-tool/releases) に移動します。
ご使用のプラットフォーム用の最新の圧縮フォルダーをダウンロードします。 win-x64、mac-x64、linux-x64 プラットフォーム用の圧縮フォルダーがあります。
ローカル コンピューター上のインストール場所にファイルを抽出します。
(省略可能) デスクトップ データ移行ツールをローカル コンピューターの
PATH
環境変数に追加します。
移行ターゲットを準備する
次に、Azure Cosmos DB for NoSQL アカウントにターゲット データベースとコンテナーを作成します。
新しいターミナルを開きます。 まだサインインしていない場合は、Azure CLI にサインインします。
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>"
az cosmosdb sql database create
を使用して新しいデータベースを作成します。 新しいデータベースcosmicworks
に名前を付け、400 RU/秒の共有スループットでデータベースを構成します。az cosmosdb sql database create \ --resource-group $resourceGroupName \ --account-name $accountName \ --name cosmicworks \ --throughput 400
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"
az cosmosdb keys list
を使用して、アカウントのキーの一覧からプライマリ接続文字列を見つけます。az cosmosdb keys list \ --resource-group $resourceGroupName \ --name $accountName \ --type connection-strings
プライマリ接続文字列の値を記録します。 この資格情報は、後でツールを使用してデータを移行するときに使用します。
移行操作を実行する
次に、JSON 配列から新しく作成された Azure Cosmos DB for NoSQL コンテナーにデータを移行します。
ローカル コンピューター上の空のディレクトリに移動します。 そのディレクトリ内に、migrationsettings.json という名前の新しいファイルを作成します。
JSON ファイル内に、新しい空の JSON オブジェクトを作成します。
{}
名前が
Source
で値がjson
の新しいプロパティを作成します。 名前がSourceSettings
で、値として空のオブジェクトを持つ別の新しいプロパティを作成します。{ "Source": "json", "SourceSettings": {} }
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" } }
名前が
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": { } }
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>" } }
Database
、Container
、PartitionKeyPath
のプロパティを追加し、cosmicworks
、products
、/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" } }
migrationsettings.json ファイルを保存します。
新しいターミナルを開き、migrationsettings.json ファイルを含むディレクトリに移動します。
dmt
コマンドを使用して、デスクトップ データ移行ツールを実行します。dmt
Note
PATH
環境変数にインストール パスを追加しなかった場合は、dmt
実行可能ファイルへの完全なパスを指定する必要がある場合があります。ツールでは、移行で使用するソースとシンクが出力されます。
Using JSON Source Using Cosmos-nosql Sink