将一个数据库中的某个集合复制到另一个数据库的集合中,原数据集合仍保留
"""
将一个数据库中的某个集合转移到另一个数据库的某个集合中(可跨数据库,原数据库集合仍保留)
"""
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)
网友评论