python脚本迁移数据库_Python迁移MySQL数据到MongoDB脚本
MongoDB是一個(gè)文檔數(shù)據(jù)庫(kù),在存儲(chǔ)小文件方面存在天然優(yōu)勢(shì)。隨著業(yè)務(wù)求的變化,需要將線上MySQL數(shù)據(jù)庫(kù)中的行記錄,導(dǎo)入到MongoDB中文檔記錄。
一、場(chǎng)景:線上MySQL數(shù)據(jù)庫(kù)某表遷移到MongoDB,字段無(wú)變化。
二、Python模塊:
使用Python的torndb,pymongo和time模塊。
*注釋:首先安裝setup.py,pip,MySQLdb
執(zhí)行如下命令即可:
pip install torndb
pip install pymongo
三、腳本內(nèi)容如下:
[root ~]#cat nmytomongo.py
#!/usr/bin/env python
#fielName: mytomongo.py
#Author:xkops
#coding: utf-8
import torndb,pymongo,time
# connect to mysql database
mysql = torndb.Connection(host='127.0.0.1', database='database', user='username', password='password')
#connect to mongodb and obtain total lines in mysql
mongo = pymongo.MongoClient('mongodb://ip').database
mongo.authenticate('username',password='password')
countlines = mysql.query('SELECT max(table_field) FROM table_name')
count = countlines[0]['max(table_field)']
#count = 300
print count
i = 0
j = 100
start_time = time.time()
#select from mysql to insert mongodb by 100 lines.
for i in range(0,count,100):
#print a,b
#print i
#print 'SELECT * FROM quiz_submission where quiz_submission_id > %d and quiz_submission_id <= %d' %(i,j)
submission = mysql.query('SELECT * FROM table_name where table_field > %d and table_field <= %d' %(i,j))
#print submission
if submission:
#collection_name like mysql table_name
mongo.collection_name.insert_many(submission)
else:
i +=100
j +=100
continue
i +=100
j +=100
end_time = time.time()
deltatime = end_time - start_time
totalhour = int(deltatime / 3600)
totalminute = int((deltatime - totalhour * 3600) / 60)
totalsecond = int(deltatime - totalhour * 3600 - totalminute * 60)
#print migrate data total time consuming.
print "Data Migrate Finished,Total Time Consuming: %d Hour %d Minute %d Seconds" %(totalhour,totalminute,totalsecond)
*注釋:按照自己的需求更改上述代碼中的數(shù)據(jù)庫(kù)地址,用戶,密碼,庫(kù)名,表名以及字段名等。
四、執(zhí)行遷移腳本:
[root ~]#python?nmytomongo.py &> /tmp/migratelog.txt &
腳本執(zhí)行完成后查看/tmp/migratelog.txt數(shù)據(jù)遷移消耗的時(shí)間。
Linux Centos 遷移Mysql 數(shù)據(jù)位置
Linux Centos 遷移Mysql 數(shù)據(jù)位置 由于業(yè)務(wù)量增加導(dǎo)致安裝在系統(tǒng)盤(20G)磁盤空間被占滿了, 現(xiàn)在進(jìn)行數(shù)據(jù)庫(kù)的遷移.?Mysql?是通過(guò)?yum?安裝的. Centos6.5Mysq ...
遷移mysql數(shù)據(jù)到oracle上
轉(zhuǎn)自:http://www.cnblogs.com/Warmsunshine/p/4651283.html 我是生成的文件里面的master.sql里面的sql,一個(gè)一個(gè)拷出來(lái)的. 遷移mysql數(shù)據(jù) ...
python查詢mysql數(shù)據(jù)(3)
python查詢mysql數(shù)據(jù)(3) """數(shù)據(jù)查詢""" import pymysql import datetime from pymy ...
python插入mysql數(shù)據(jù)(2)
python插入mysql數(shù)據(jù)(2) """插入操作""" import pymysql import datetime from pymy ...
【初學(xué)python】使用python連接mysql數(shù)據(jù)查詢結(jié)果并顯示
因?yàn)闇y(cè)試工作經(jīng)常需要與后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)比較和統(tǒng)計(jì),所以采用python編寫連接數(shù)據(jù)庫(kù)腳本方便測(cè)試,提高工作效率,腳本如下(python連接mysql需要引入第三方庫(kù)MySQLdb,百度下載安裝) # ...
HBase——使用Put遷移MySql數(shù)據(jù)到Hbase
先上code: /** * 功能:遷移mysql上電池歷史數(shù)據(jù)到hbase * Created by liuhuichao on 2016/12/6. */ public class MySqlToH ...
python連接mysql數(shù)據(jù)表查詢表獲取數(shù)據(jù)導(dǎo)入到txt中
import pymysql'''連接mysql數(shù)據(jù)表查詢表獲取數(shù)據(jù)導(dǎo)入到txt中'''#查詢結(jié)果寫入數(shù)據(jù)到txtdef get_loan_number(file_txt): connect = py ...
python取mysql數(shù)據(jù)寫入excel
環(huán)境:MySQLdb openpyxl模塊 python去zabbix的mysql數(shù)據(jù)庫(kù)中取交換機(jī)不同時(shí)間段的進(jìn)出口流量,然后寫入excel中,每天cron執(zhí)行,每周四郵件發(fā)送.(代碼中第一行必須加上 ...
python導(dǎo)出zabbix數(shù)據(jù)并發(fā)郵件腳本
Zabbix沒有報(bào)表導(dǎo)出的功能,于是通過(guò)編寫腳本導(dǎo)出zabbix數(shù)據(jù)并發(fā)郵件.效果如下: 下面是腳本,可根據(jù)自己的具體情況修改: #!/usr/bin/python #coding:utf-8 imp ...
隨機(jī)推薦
[麥先生]SEO--相關(guān)優(yōu)化【基礎(chǔ)】
收錄的一個(gè)重要原則:離首頁(yè)的遠(yuǎn)近.離首頁(yè)太遠(yuǎn),不容易被收錄.內(nèi)頁(yè)必須距離首頁(yè)3-4次點(diǎn)擊之內(nèi). 原因:1.對(duì)于一個(gè)網(wǎng)站來(lái)說(shuō),搜索引擎經(jīng)常來(lái)的地方是首頁(yè),因?yàn)楹芏嗤獠挎溄渔溝虻氖鞘醉?yè)如友情鏈接.做的外鏈 ...
pod install出現(xiàn)[!] /bin/bash -c錯(cuò)誤,Installing Realm報(bào)錯(cuò)
pod install出現(xiàn)錯(cuò)誤,具體錯(cuò)誤信息如下: Installing Realm () [!] /bin/bash -c set -e sh build.sh cocoapods-setup co ...
Oracle創(chuàng)建,刪除用戶與表空間
1.創(chuàng)建表空間與用戶 a:創(chuàng)建數(shù)據(jù)表空間 create tablespace user_data logging datafile 'D:\oracle\product\10.2.0\oradata\ ...
如何利用VS2010安裝和部署應(yīng)用程序
轉(zhuǎn)自:http://jingyan.baidu.com/article/4b52d70255d7f0fc5d774b4d.html 1.假設(shè)你當(dāng)前的winform已經(jīng)okay了 2.解決方案中新建&q ...
hdu 2025
水題 AC代碼: #include using namespace std; int main() { char a[100],*p; int max,i; whil ...
理解 backbone.js 中的 bind 和 bindAll 方法,關(guān)于如何在方法中指定其中的 this,包含apply方法的說(shuō)明[轉(zhuǎn)載]
轉(zhuǎn)載自:http://gxxsite.com/content/view/id/132.html 在backbone.js的學(xué)習(xí)過(guò)程中,被bind和bindAll弄得有點(diǎn)暈,這里包括underscore ...
IAM
IAM 與 權(quán)限訪問(wèn)控制機(jī)制 IAM , Identity and Access Management 基本概念 ARN, Amazon Resource Name : 在 AWS 里, 創(chuàng)建的任何資 ...
ASP.NET重寫Render 加載CSS樣式文件和JS文件(切換CSS換皮膚)
網(wǎng)頁(yè)換皮膚的方式有很多種,最簡(jiǎn)單的通常就是切換頁(yè)面CSS,而CSS通常寫在外部CSS文件里.那么切換CSS其實(shí)就是更換html里的link href路徑.我在網(wǎng)上搜索了下. 一般有兩種方式: 1.頁(yè)面 ...
js中怎么為同級(jí)元素添加點(diǎn)擊事件
事件件是javascript腳本語(yǔ)言的重要組成部分,因?yàn)橛惺录攀褂脩繇?yè)面的體驗(yàn)更加的美好.元素添加事件是js語(yǔ)言中最基礎(chǔ)的.我們可以為元素本身添加事件,也可以通過(guò)事件綁定和事件監(jiān)聽為元素的父元素和子 ...
linux 安裝 zookeeper 集群
關(guān)閉防火墻 systemctl stop firewalld.service systemctl disable firewalld.servicesystemctl status firewalld ...
總結(jié)
以上是生活随笔為你收集整理的python脚本迁移数据库_Python迁移MySQL数据到MongoDB脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python的心得体会200字_pyth
- 下一篇: mysql 视图慢_第03问:磁盘 IO