你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用桌面数据迁移工具将数据迁移到 Azure Cosmos DB
适用对象: NoSQL MongoDB 表
Azure Cosmos DB 桌面数据迁移工具是一个开源命令行应用程序,用于向 Azure Cosmos DB 导入数据或从中导出数据。 该工具可以向/从多个源和接收器迁移数据,包括但不限于:
- Azure Cosmos DB for NoSQL
- 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 帐户的名称和资源组创建新的 shell 变量。
# 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/s 的共享吞吐量。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
注意
如果未将安装路径添加到
PATH
环境变量,则可能需要指定dmt
可执行文件的完整路径。该工具现在输出迁移使用的源和接收器。
Using JSON Source Using Cosmos-nosql Sink