如何将Azure Cosmos DB数据导入本地Cosmos DB Emulator
工具支持性说明
可以明确:官方提供的Cosmos DB数据迁移工具完全支持将云端实例的数据导出后导入本地Emulator,除此之外还有更轻量的操作方案可选。
操作步骤
方案1:使用官方数据迁移工具
- 首先从云端Cosmos DB导出数据:选择源为你对应的云端开发/QA环境Cosmos DB账户,可选择导出格式为JSON文件,或者直接选择目标为本地Cosmos DB Emulator跳过中间文件步骤
- 若选择先导出到本地JSON:导出完成后,将迁移工具的源设置为你导出的JSON文件,目标设置为本地Cosmos DB Emulator
- 连接Emulator时使用默认连接字符串即可,导入时注意保持目标集合的分区键设置与原集合完全一致
- 本地Emulator的吞吐量可按需调低,减少本地资源占用
方案2:更简便的命令行操作(适合自动化场景)
- 用Azure CLI的
cosmosdb sql container export命令直接将云端集合导出为JSON到本地目录 - 再用
cosmosdb sql container create提前在Emulator中创建好对应结构的集合 - 最后用
cosmosdb sql container import命令将本地JSON文件导入Emulator中的对应集合
方案3:可视化操作(适合少量集合快速迁移)
- 安装Azure Data Studio的Cosmos DB扩展,同时连接云端Cosmos DB账户和本地Emulator
- 直接在对应集合上右键选择「复制数据到」,选择目标为本地Emulator的对应集合即可自动完成迁移
加密协议报错解决方案
你遇到的Request is being made with a forbidden encryption in transit protocol or cipher报错核心原因是传输时使用的TLS版本低于云端Cosmos DB要求的最低版本,按以下步骤处理即可:
- 首先将数据迁移工具、本地Cosmos DB Emulator都更新到最新版本,旧版本工具默认使用TLS 1.0/1.1,不符合云端安全要求
- 检查本地操作系统的TLS设置,确保TLS 1.2及以上版本已启用:Windows系统可在注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client路径下,将Enabled值设为1,DisabledByDefault值设为0 - 若使用命令行启动迁移工具,可在启动前执行命令
set DOTNET_SYSTEM_NET_HTTP_USESOCKETSHTTPHANDLER=0强制工具使用符合要求的加密协议
内容的提问来源于stack exchange,提问作者Dan Csharpster
相关产品推荐
相关产品推荐

