MLCP导入导出时保留文档原集合与URI的方法咨询
MLCP导入导出时保留文档原集合与URI的方法咨询
嘿,这个问题我之前也帮人排查过,其实就是MLCP导出导入时的参数搭配没到位——你现在碰到的URI变成文件路径、集合未保留的问题,都能通过调整参数解决,给你两种可行方案:
方案一:使用归档方式导出/导入(推荐,最省心)
如果是跨数据库迁移文档,MLCP的归档导出是最稳妥的方式,它会把所有文档的原URI、集合、元数据等信息打包成一个归档文件,导入时直接读取就能完全还原。
修改后的导出命令:
添加 -export_type archive 参数,同时把输出路径指定为归档文件名(比如abcd.zip):
mlcp.sh export -mode local -host some.url -port 8000 \ -username user -password password -output_file_path abcd.zip -database some-database \ -collection_filter abcd -copy_collections true -ssl true \ -copy_metadata true -copy_properties true -export_type archive
对应的导入命令:
直接用归档文件作为输入,不需要额外的元数据相关参数,MLCP会自动解析归档里的所有信息:
mlcp.sh import -mode local -host some-url -port 8000 \ -username user -password password -input_file_path ./abcd.zip -database some-database \ -ssl true
这样导入后,文档的URI、集合、元数据都会和原数据库完全一致,不会出现任何偏差。
方案二:继续使用文件系统导出/导入(调整导入参数)
如果你坚持要使用文件系统存储导出的文档,那需要在导入命令里补充两个关键参数,让MLCP恢复原URI并读取集合元数据:
修改后的导入命令:
添加 -restore_original_uri true(从导出的文件名恢复原URI)和 -metadata_file_suffix .metadata(读取每个文档对应的元数据文件,包含集合信息):
mlcp.sh import -mode local -host some-url -port 8000 \ -username user -password password -input_file_path ./abcd -database some-database \ -copy_collections true -ssl true \ -copy_metadata true -copy_properties true \ -restore_original_uri true -metadata_file_suffix .metadata
为什么之前的导入不行?
默认情况下,MLCP导入文件系统中的文档时,会把文件的相对路径作为新的URI,而且不会自动读取导出时生成的.metadata文件(这个文件里存着原集合、属性等信息),所以必须手动开启这两个参数才能还原。
备注:内容来源于stack exchange,提问作者CJ Chang
相关产品推荐
相关产品推荐

