Bagaimana untuk menolak data ke Mongo secara berkelompok menggunakan MySQL

WBOY
Lepaskan: 2023-05-31 17:28:13
ke hadapan
1463 orang telah melayarinya

import pymongo 
import mysql.connector
Salin selepas log masuk

Sambung ke pangkalan data MySQL

mysql_conn = mysql.connector.connect( host="localhost", user="yourusername", password="yourpassword", database="yourdatabase" )
Salin selepas log masuk

Sambung ke pangkalan data MongoDB

mongo_client = pymongo.MongoClient("mongodb://localhost:27017/") mongo_db = mongo_client["mydatabase"] mongo_collection = mongo_db["mycollection"]
Salin selepas log masuk

Buat indeks untuk koleksi yang ditentukan dalam MongoDB

mongo_collection.create_index([("myfield", pymongo.ASCENDING)])
Salin selepas log masuk

Senarai penimbal dan balas kepada kelompok selepas setiap 10000 baris

bulk_data = [] bulk_count = 0
Salin selepas log masuk

Mencipta objek kursor dan mendapatkan semula data daripada pangkalan data MySQL

mysql_cursor = mysql_conn.cursor() mysql_cursor.execute("SELECT * FROM mytable")
Salin selepas log masuk

Lelaran melalui set hasil dan memproses setiap baris.

for row in mysql_cursor: # 将一条记录转换成你的MongoDB文档,然后将其添加到缓冲列表。 
doc = { "myfield": row[0], "anotherfield": row[1], "yetanotherfield": row[2] } bulk_data.append(doc) bulk_count += 1
Salin selepas log masuk
# 如果我们达到了10000,请在集合中批量插入缓冲数据。
if bulk_count == 10000:
    mongo_collection.insert_many(bulk_data)
    # 重置计数器并清除缓冲数据列表
    bulk_count = 0
    bulk_data.clear()
Salin selepas log masuk

Proses baris yang tinggal, jika ada apa-apa yang perlu diproses.

if bulk_count > 0: mongo_collection.insert_many(bulk_data)
Salin selepas log masuk

Tutup sambungan MySQL.

mysql_conn.close()

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()
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk menolak data ke Mongo secara berkelompok menggunakan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan