PythonでMySQLデータをMongoDBスクリプトに移行する方法
MongoDB概要
MongoDBは、分散ファイルに基づいて格納されたデータベースです。C++言語で作成します。WEBアプリケーションに拡張可能な高性能データストアソリューションを提供することを目的としています。
MongoDBは関係データベースと非関係データベースの間に介在する製品で、非関係データベースの中で最も機能が豊富で、最も関係データベースのようです。
MongoDBは文書データベースであり、小ファイルの保存には天然の利点があります。業務要求の変化に伴い、オンラインMySQLデータベースの行記録をMongoDBに導入する必要があります。
一、シーン:オンラインMySQLデータベースのあるテーブルがMongoDBに移行し、フィールドは変化がない。
二、Pythonモジュール:
Pythonのtondb、pymontoとtimeモジュールを使います。
*コメント:まずsetup.py,pip,MySQLdbをインストールします。
次のコマンドを実行すればいいです。
pip install tondb
pip install pymono
三、脚本の内容は以下の通りです。
[root~]芫cat nmytomono.py
ヽusr/bin/env python芫fielName:mytomonto.py Author:xkops嗵coding:utf-8 import tondb,pymonto,time me me me me==tondb.innect=tors=torspassword='password')芰connect to mongodb and obatain total lineas in in in mysqlmont=pymont.Mongo Client('mongodb://ip').databasemongo.authenticate('username',password='password')countlines=mysql.query('SELECT max(table_)field)FROMテーブル_name')count=countlines[0]['max(table_)field''菗count=300 print counti=0 j=100 start_time=time.time(zhi select from mysql to insert mongodb by 100 line s.for i in range(0,count,100):嗳print a,b噗print isubmission where quiz_submission_id>%d and quiz_submission_id<=%d'(i,j)submission=mysql.query('SELECT*FROM table uname whereテーブルfield>%d and table_field(=%d'(i,j))鍷print submission if submission:萶collectionname like mysql table uname mono.coコレクション。name.insert_many(submission)else:i+=100 j+=100 continue i+=100 j+=100 end_time=time.time()deltate=end_time-start_time totalhour=int(deltatime/3600)totalminute=int(deltatime-totalhour*3600)/60)total second=int(deltatime-totalhoure*3600-totalminute*60)滯print migrate data Tatal time consult.ingtotal.ingtotal。totalsecond)
*コメント:上記コードのデータベースアドレス、ユーザ、パスワード、倉庫名、テーブル名、フィールド名などを自分のニーズに合わせて変更します。
四、移行スクリプトを実行する:
[root~]菗python nmytomono.py&]/tmp/migratelog.txt&
スクリプトの実行が完了したら/tmp/migratelog.txtデータの移行に時間がかかります。
MongoDBは、分散ファイルに基づいて格納されたデータベースです。C++言語で作成します。WEBアプリケーションに拡張可能な高性能データストアソリューションを提供することを目的としています。
MongoDBは関係データベースと非関係データベースの間に介在する製品で、非関係データベースの中で最も機能が豊富で、最も関係データベースのようです。
MongoDBは文書データベースであり、小ファイルの保存には天然の利点があります。業務要求の変化に伴い、オンラインMySQLデータベースの行記録をMongoDBに導入する必要があります。
一、シーン:オンラインMySQLデータベースのあるテーブルがMongoDBに移行し、フィールドは変化がない。
二、Pythonモジュール:
Pythonのtondb、pymontoとtimeモジュールを使います。
*コメント:まずsetup.py,pip,MySQLdbをインストールします。
次のコマンドを実行すればいいです。
pip install tondb
pip install pymono
三、脚本の内容は以下の通りです。
[root~]芫cat nmytomono.py
ヽusr/bin/env python芫fielName:mytomonto.py Author:xkops嗵coding:utf-8 import tondb,pymonto,time me me me me==tondb.innect=tors=torspassword='password')芰connect to mongodb and obatain total lineas in in in mysqlmont=pymont.Mongo Client('mongodb://ip').databasemongo.authenticate('username',password='password')countlines=mysql.query('SELECT max(table_)field)FROMテーブル_name')count=countlines[0]['max(table_)field''菗count=300 print counti=0 j=100 start_time=time.time(zhi select from mysql to insert mongodb by 100 line s.for i in range(0,count,100):嗳print a,b噗print isubmission where quiz_submission_id>%d and quiz_submission_id<=%d'(i,j)submission=mysql.query('SELECT*FROM table uname whereテーブルfield>%d and table_field(=%d'(i,j))鍷print submission if submission:萶collectionname like mysql table uname mono.coコレクション。name.insert_many(submission)else:i+=100 j+=100 continue i+=100 j+=100 end_time=time.time()deltate=end_time-start_time totalhour=int(deltatime/3600)totalminute=int(deltatime-totalhour*3600)/60)total second=int(deltatime-totalhoure*3600-totalminute*60)滯print migrate data Tatal time consult.ingtotal.ingtotal。totalsecond)
*コメント:上記コードのデータベースアドレス、ユーザ、パスワード、倉庫名、テーブル名、フィールド名などを自分のニーズに合わせて変更します。
四、移行スクリプトを実行する:
[root~]菗python nmytomono.py&]/tmp/migratelog.txt&
スクリプトの実行が完了したら/tmp/migratelog.txtデータの移行に時間がかかります。