MongoDB不同版本的数据迁移, 中间可涂改

2020-05-07  本文已影响0人  aq_wzj

问题: 由于因为版本不同, 表名都为UUID, 且表很多

环境:

10.131.70.49   
    OS: Win10  
    MongoDB version: 4.2.5

192.168.11.26  
    OS: Ubuntu16.04  
    MongoDB version: 2.6.10

解决:

from pymongo import MongoClient

FROM_ADDRESS = ("10.131.70.49", 27017)  # TODO 源mongo地址, 自行更改
TO_ADDRESS = ("192.168.11.26", 27017)  # TODO 目的mongo地址, 自行更改
DB_NAME = "mission"  # TODO 需要备份的数据库, 自行更改


def write(_id, data):
    to_conn = MongoClient(*TO_ADDRESS)
    to_db = to_conn[DB_NAME]
    tab = to_db[_id]
    tab.insert(data)
    to_conn.close()


def main():
    from_conn = MongoClient(*FROM_ADDRESS)
    from_db = from_conn[DB_NAME]
    tables_list = from_db.list_collection_names()  # 数据库里面所有的表
    """
    这里可以去掉不需要动的一些表
    """
    tables_list.pop(tables_list.index("system.indexes"))  # 去掉了system.indexes这张表
    for table in tables_list:
        db_data = from_db[table].find()
        # _db[table].drop()  # 若源数据库的数据不再需要就解开注释
        """
        这里可对数据进行操作, 批量修改, 排序等
        """
        write(table, db_data)  # 写入数据库
    from_conn.close()


if __name__ == '__main__':
    main()
上一篇下一篇

猜你喜欢

热点阅读