无法向/从Cosmos DB容器导入导出大数据量问题求助
Cosmos DB迁移工具导出/导入数据不全的修复方案
导出不全的问题修复
1. 修正分区键配置
如果目标容器的实际分区键不是/id,请删除配置中的PartitionKeyPath参数;若分区键确实是/id,则保留该参数。错误的分区键配置会导致工具仅扫描对应分区的数据,无法导出全量记录。
2. 启用跨分区查询并取消分页限制
在SourceSettings中添加以下参数,确保工具能遍历所有分区并获取全量数据:
EnableCrossPartitionQuery": true:允许跨分区查询所有数据MaxItemCount": -1:取消单页返回数据量的限制
修改后的导出配置示例:
{ "Source": "cosmos-nosql", "SourceSettings": { "ConnectionString" :"AccountEndpoint=<URL>;AccountKey=<AccountKey>", "Database": "DH-PRES-DB", "Container":"Event", // 若分区键不是/id则删除此行,否则保留 // "PartitionKeyPath": "/id", "QueryText": "Select * from c", "EnableCrossPartitionQuery": true, "MaxItemCount": -1 }, "Sink": "json", "SinkSettings": { "FilePath" : "C:\\Users\\us25\\Downloads\\dmtFile\\Event_test.json" } }
导入不全的问题修复
1. 配置批量导入参数
在SinkSettings中添加以下参数,提升写入效率并避免因速率限制导致的数据丢失:
EnableBulkImport": true:启用批量导入模式BatchSize": 1000:根据容器RU/s调整批量大小(RU值较高可适当增大)MaxConcurrentConnections": 10:控制并发写入数,避免触发429限流错误
2. 匹配分区键
确保导入配置中的PartitionKeyPath与目标容器的实际分区键完全一致,否则会导致数据写入失败或被丢弃。
修改后的导入配置示例(假设源为JSON文件):
{ "Source": "json", "SourceSettings": { "FilePath" : "C:\\Users\\us25\\Downloads\\dmtFile\\Event_test.json" }, "Sink": "cosmos-nosql", "SinkSettings": { "ConnectionString" :"AccountEndpoint=<URL>;AccountKey=<AccountKey>", "Database": "DH-PRES-DB", "Container":"Event", "PartitionKeyPath": "/your-actual-partition-key", "EnableBulkImport": true, "BatchSize": 1000, "MaxConcurrentConnections": 10 } }
额外注意事项
- 调整容器吞吐量:若导入时频繁出现429限流错误,可临时提升容器的RU/s,或降低
BatchSize和MaxConcurrentConnections参数。 - 校验数据量:导出后检查JSON文件的记录数,导入后对比源容器与目标容器的记录总数,确认数据完整。
- 日志排查:若问题仍存在,查看迁移工具生成的日志文件,定位具体错误(如超时、权限不足、数据格式异常等)。
内容的提问来源于stack exchange,提问作者Md Tauhid
相关产品推荐
相关产品推荐

