MySQL实现批量推送数据到Mongo(mysql导入数据)居然可以这样

随心笔谈2年前发布 编辑
155 0
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

import pymongo
import mysql.connector
# 连接MySQL数据库
mysql_conn=mysql.connector.connect(
host=”localhost”,
user=”yourusername”,
password=”yourpassword”,
database=”yourdatabase”
)
# 连接MongoDB数据库
mongo_client=pymongo.MongoClient(“mongodb://localhost:27017/”)
mongo_db=mongo_client[“mydatabase”]
mongo_collection=mongo_db[“mycollection”]
# 在MongoDB中为指定集合创建索引
mongo_collection.create_index([(“myfield”, pymongo.ASCENDING)])
# 缓冲列表和计数器以在每10000行处理后进行批处理
bulk_data=[]
bulk_count=0
# 创建游标对象并从MySQL数据库检索数据
mysql_cursor=mysql_conn.cursor()
mysql_cursor.execute(“SELECT * FROM mytable”)
# 遍历结果集并处理每个行。
for row in mysql_cursor:
# 将一条记录转换成你的MongoDB文档,然后将其添加到缓冲列表。
doc={
“myfield”: row[0],
“anotherfield”: row[1],
“yetanotherfield”: row[2]
}
bulk_data.append(doc)
bulk_count +=1
# 如果我们达到了10000,请在集合中批量插入缓冲数据。
if bulk_count==10000:
mongo_collection.insert_many(bulk_data)
# 重置计数器并清除缓冲数据列表
bulk_count=0
bulk_data.clear()
# 处理剩余的行,如果有任何事情需要处理。
if bulk_count > 0:
mongo_collection.insert_many(bulk_data)
# 关闭MySQL连接。
mysql_conn.close()

© 版权声明

相关文章