MySQL を使用してデータを Mongo にバッチでプッシュする方法

WBOY
リリース: 2023-05-31 17:28:13
転載
1456 人が閲覧しました

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

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()
ログイン後にコピー

以上がMySQL を使用してデータを Mongo にバッチでプッシュする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート