mongo数据库表迁移
迁移工具下载
近期,公司涉及到mongodb 数据库迁移。
首先先下载迁移工具,mongodb-database-tools,我用的是windows的。
解压后,将该目录加入环境变量。
迁移命令
注意:mongo数据有密码的情况下加入 --authenticationDatabase admin
mongoexport导出
mongoexport -d dbname -c collectionname -o file --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
-o :输出的文件名
--type : 输出的格式,默认为json
-f :输出的字段,如果-type为csv,则需要加上-f "字段名"
mongoimport导入
mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field
参数说明:
-d :数据库名
-c :collection名
--type :导入的格式默认json
-f :导入的字段名
--headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
--file :要导入的文件
迁移小工具
本文基于python做了迁移小工具。
导出工具
import subprocess
def export(port: str, host: str, user: str, password: str, database: str, collection: str, file_name: str):
"""
mongo导出工具
:param port: mongo数据库端口
:param host: mongo数据库ip
:param user: mongo数据库用户名
:param password: mongo数据库密码
:param database: mongo数据库名
:param collection: mongo数据库collection名
:param file_name: mongo数据库文件名json格式
:return: 是否成功0成功、1失败
"""
cmd = f'mongoexport --port {port} --host {host} --username {user} --password {password} --db {database} --collection {collection} --type=json -o {file_name} --authenticationDatabase admin'
compilePopEn = subprocess.Popen(cmd)
compilePopEn.wait()
return compilePopEn.returncode
导入工具
def mongo_import(port: str, host: str, user: str, password: str, database: str, collection: str, file_name: str):
"""
mongo导入工具
:param port: mongo数据库端口
:param host: mongo数据库ip
:param user: mongo数据库用户名
:param password: mongo数据库密码
:param database: mongo数据库名
:param collection: mongo数据库collection名
:param file_name: mongo数据库文件名json格式
:return: 是否成功0成功、1失败
"""
cmd = f'mongoimport --port {port} --host {host} --username {user} --password {password} --db {database} --collection {collection} --file {file_name} --authenticationDatabase admin'
compilePopEn = subprocess.Popen(cmd)
compilePopEn.wait()
return compilePopEn.returncode