美文网首页
MongoDB不同版本的数据迁移, 中间可涂改

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

作者: aq_wzj | 来源:发表于2020-05-07 16:08 被阅读0次

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

    • 使用mongodump备份的数据再使用mongorestore恢复时会报错
    • 使用mongoexportmongoimport命令只能每次指定一张表, 无法直接导出数据库

    环境:

    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()
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/scpaghtx.html