适用对象: 表
本教程说明如何导入要用于 Azure Cosmos DB API for Table 的数据。 如果已将数据存储在 Azure 表存储中,可以使用数据迁移工具将数据导入 Azure Cosmos DB for Table。
先决条件
增加吞吐量: 数据迁移的持续时间取决于为单个容器或一组容器设置的吞吐量。 请确保对于较大的数据迁移增加吞吐量。 完成迁移后,减少吞吐量以节约成本。
创建 Azure Cosmos DB 资源:在开始迁移数据之前,从 Azure 门户创建所有表。 如果要迁移到具有数据库级别吞吐量的 Azure Cosmos DB 帐户,请确保在创建 Azure Cosmos DB 表时提供分区键。
数据迁移工具
重要
数据迁移工具的所有权已转让给第三方,该第三方充当这款开源工具的维护者。 该工具目前正在更新以使用最新的 nuget 包,因此目前不适用于主分支。 这个工具有一个分支可以工作。 可在此处了解详细信息。
可以使用 Azure Cosmos DB 中的命令行数据迁移工具 (dt.exe) 将现有 Azure 表存储数据导入 API for Table 帐户。
如要迁移表数据:
从 GitHub 下载迁移工具。
使用适用于你方案的命令行参数运行
dt.exe。dt.exe采用以下格式的命令:dt.exe [/<option>:<value>] /s:<source-name> [/s.<source-option>:<value>] /t:<target-name> [/t.<target-option>:<value>]
此命令支持的选项为:
- /ErrorLog: 可选。 要重定向数据传输失败的 CSV 文件名称。
- /OverwriteErrorLog: 可选。 覆盖错误日志文件。
- /ProgressUpdateInterval:可选,默认值为
00:00:01。 刷新屏幕上数据传输进度的时间间隔。 - /ErrorDetails:可选,默认值为
None。 指定应针对以下错误显示详细错误信息:None、Critical或All。 - /EnableCosmosTableLog: 可选。 将日志定向到 Azure Cosmos DB 表帐户。 如果设置,这会默认为目标帐户连接字符串,除非还提供了
/CosmosTableLogConnectionString。 如果同时运行多个工具实例,这将很有用。 - /CosmosTableLogConnectionString: 可选。 用于将日志定向到远程 Azure Cosmos DB 表帐户的连接字符串。
命令行源设置
将 Azure 表存储定义为迁移源时,请使用以下源选项。
- /s:AzureTable:从表存储读取数据。
- /s.ConnectionString: 表终结点的连接字符串。 你可从 Azure 门户进行检索。
- /s.LocationMode:可选,默认值为
PrimaryOnly。 指定连接到表存储时要使用的位置模式:PrimaryOnly、PrimaryThenSecondary、SecondaryOnly和SecondaryThenPrimary。 - /s.Table:Azure 表的名称。
- /s.InternalFields:由于导入需要
RowKey和PartitionKey,请设置为All以进行表迁移。 - /s.Filter: 可选。 要应用的筛选器字符串。
- /s.Projection: 可选。 要选择的列的列表。
若要在从表存储导入时检索源连接字符串,请打开 Azure 门户。 选择“存储帐户”>“帐户”>“访问密钥”,并复制连接字符串。
命令行目标设置
将 Azure Cosmos DB for Table 定义为迁移目标时,请使用以下目标选项。
- /t:TableAPIBulk:按批次将数据上传到 Azure Cosmos DB for Table。
- /t.ConnectionString:表终结点的连接字符串。
- /t.TableName:指定要写入的表名称。
- /t.Overwrite:可选,默认值为
false。 指定是否应覆盖现有值。 - /t.MaxInputBufferSize:可选,默认值为
1GB。 将数据刷新到接收器之前要缓冲的输入字节大致估计值。 - /t.Throughput: 可选,如果未指定,则为服务默认值。 指定要为表配置的吞吐量。
- /t.MaxBatchSize:可选,默认值为
2MB。 指定批大小(以字节为单位)。
示例命令:源是表存储
下面的命令行示例展示了如何从表存储导入到 API for Table:
dt /s:AzureTable /s.ConnectionString:DefaultEndpointsProtocol=https;AccountName=<Azure Table storage account name>;AccountKey=<Account Key>;EndpointSuffix=core.chinacloudapi.cn /s.Table:<Table name> /t:TableAPIBulk /t.ConnectionString:DefaultEndpointsProtocol=https;AccountName=<Azure Cosmos DB account name>;AccountKey=<Azure Cosmos DB account key>;TableEndpoint=https://<Account name>.table.cosmos.azure.cn:443 /t.TableName:<Table name> /t.Overwrite
后续步骤
了解如何使用 Azure Cosmos DB for Table 查询数据。