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

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

文章摘要

这篇文章介绍了如何使用Python语言通过`pymongo`连接MongoDB数据库,并通过MySQL数据库进行数据查询和批量导入操作。代码中使用缓冲列表和计数器实现每10000行数据进行一次批量处理,以减少内存压力。此外,文章提到在MongoDB中为指定集合创建了索引以提高查询性能,并展示了如何从MySQL数据库中检索数据并将其转换为MongoDB文档进行批量插入。

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

© 版权声明

相关文章