mongo复制集合

2019-10-08  本文已影响0人  奈斯凸米特

将一个数据库中的某个集合复制到另一个数据库的集合中,原数据集合仍保留

"""
将一个数据库中的某个集合转移到另一个数据库的某个集合中(可跨数据库,原数据库集合仍保留)
"""
import pymongo
import traceback


def first_db_datas():
    # 第一个数据库
    ip_1 = input('请输入要转移的数据库ip:')
    client_1 = pymongo.MongoClient('mongodb://%s:27017' % ip_1)
    # 这里该数据库需要验证
    if ip_1 == '192.168.0.123':
        client_1['admin'].authenticate('用户名', '密码')
    print(client_1.list_database_names())
    db_name_1 = input('请输入要转移的数据库名:')
    db_1 = client_1[db_name_1]
    col_li = db_1.collection_names()  # 打印出该库下所有的集合
    print(col_li)
    collection_name_1 = input('请输入要转移的集合名:')
    while True:
        if collection_name_1 in col_li:
            break
        else:
            collection_name_1 = input('没有这个数据库,请重新输入:')
    collection_1 = db_1[collection_name_1]

    return collection_1.find()


def second_db(datas):
    # 第二个数据库
    ip_2 = input('请输入目标数据库ip:')
    client_2 = pymongo.MongoClient('mongodb://%s:27017' % ip_2)
    db_name_2 = input('请输入目标数据库名:')
    db_2 = client_2[db_name_2]
    if ip_2 == '192.168.0.123':
        db_2.authenticate(name='用户名', password='密码', source='admin')
    collection_name_2 = input('请输入目标集合名(如果没有则创建):')
    collection_2 = db_2[collection_name_2]
    print('正在转移...')
    # 存入数据
        try:
        collection_2.insert_many(datas)
    except:
        print('程序出现如下错误,请检查!!!')
        print('*' * 10 + ' 错误信息 ' + '*' * 10)
        print(traceback.format_exc())
        print('*' * 26)
    else:
        print('转移完成!')


if __name__ == '__main__':
    datas = first_db_datas()
    second_db(datas)

上一篇下一篇

猜你喜欢

热点阅读