使用桌面資料移轉工具將資料遷移至 Azure Cosmos DB
適用於:NoSQL MongoDB 桌子
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 的資料移轉。
必要條件
- 現有的 Azure Cosmos DB for NoSQL 帳戶。
- 如果您有 Azure 訂用帳戶,請建立新的帳戶。
- 如尚未擁有 Azure 訂用帳戶,請在開始之前先建立免費帳戶。
- 或者,您可以在認可之前免費試用 Azure Cosmos DB。
- 最新版的 Azure CLI。
- .NET 6.0 或更新版本。
安裝桌面資料移轉工具
首先,從 GitHub 存放庫安裝最新版本的桌面資料移轉工具。
注意
桌面資料移轉工具需要本機電腦上具有 .NET 6.0 或更新版本。
在您的瀏覽器中,瀏覽至存放庫的 [版本] 區段: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 物件:
{}
建立值為
json
且名為Source
的新屬性。 建立另一個名為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" } }
建立另一個值為
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": { } }
在
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
注意
如果您未將安裝路徑新增至
PATH
環境變數,您可能需要指定dmt
可執行檔的完整路徑。此工具現在會輸出移轉所使用的來源和接收端。
Using JSON Source Using Cosmos-nosql Sink