python脚本迁移数据库_Python迁移MySQL数据到MongoDB脚本
MongoDB是一個文檔數據庫,在存儲小文件方面存在天然優勢。隨著業務求的變化,需要將線上MySQL數據庫中的行記錄,導入到MongoDB中文檔記錄。
一、場景:線上MySQL數據庫某表遷移到MongoDB,字段無變化。
二、Python模塊:
使用Python的torndb,pymongo和time模塊。
*注釋:首先安裝setup.py,pip,MySQLdb
執行如下命令即可:
pip install torndb
pip install pymongo
三、腳本內容如下:
[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)
*注釋:按照自己的需求更改上述代碼中的數據庫地址,用戶,密碼,庫名,表名以及字段名等。
四、執行遷移腳本:
[root ~]#python?nmytomongo.py &> /tmp/migratelog.txt &
腳本執行完成后查看/tmp/migratelog.txt數據遷移消耗的時間。
Linux Centos 遷移Mysql 數據位置
Linux Centos 遷移Mysql 數據位置 由于業務量增加導致安裝在系統盤(20G)磁盤空間被占滿了, 現在進行數據庫的遷移.?Mysql?是通過?yum?安裝的. Centos6.5Mysq ...
遷移mysql數據到oracle上
轉自:http://www.cnblogs.com/Warmsunshine/p/4651283.html 我是生成的文件里面的master.sql里面的sql,一個一個拷出來的. 遷移mysql數據 ...
python查詢mysql數據(3)
python查詢mysql數據(3) """數據查詢""" import pymysql import datetime from pymy ...
python插入mysql數據(2)
python插入mysql數據(2) """插入操作""" import pymysql import datetime from pymy ...
【初學python】使用python連接mysql數據查詢結果并顯示
因為測試工作經常需要與后臺數據庫進行數據比較和統計,所以采用python編寫連接數據庫腳本方便測試,提高工作效率,腳本如下(python連接mysql需要引入第三方庫MySQLdb,百度下載安裝) # ...
HBase——使用Put遷移MySql數據到Hbase
先上code: /** * 功能:遷移mysql上電池歷史數據到hbase * Created by liuhuichao on 2016/12/6. */ public class MySqlToH ...
python連接mysql數據表查詢表獲取數據導入到txt中
import pymysql'''連接mysql數據表查詢表獲取數據導入到txt中'''#查詢結果寫入數據到txtdef get_loan_number(file_txt): connect = py ...
python取mysql數據寫入excel
環境:MySQLdb openpyxl模塊 python去zabbix的mysql數據庫中取交換機不同時間段的進出口流量,然后寫入excel中,每天cron執行,每周四郵件發送.(代碼中第一行必須加上 ...
python導出zabbix數據并發郵件腳本
Zabbix沒有報表導出的功能,于是通過編寫腳本導出zabbix數據并發郵件.效果如下: 下面是腳本,可根據自己的具體情況修改: #!/usr/bin/python #coding:utf-8 imp ...
隨機推薦
[麥先生]SEO--相關優化【基礎】
收錄的一個重要原則:離首頁的遠近.離首頁太遠,不容易被收錄.內頁必須距離首頁3-4次點擊之內. 原因:1.對于一個網站來說,搜索引擎經常來的地方是首頁,因為很多外部鏈接鏈向的是首頁如友情鏈接.做的外鏈 ...
pod install出現[!] /bin/bash -c錯誤,Installing Realm報錯
pod install出現錯誤,具體錯誤信息如下: Installing Realm () [!] /bin/bash -c set -e sh build.sh cocoapods-setup co ...
Oracle創建,刪除用戶與表空間
1.創建表空間與用戶 a:創建數據表空間 create tablespace user_data logging datafile 'D:\oracle\product\10.2.0\oradata\ ...
如何利用VS2010安裝和部署應用程序
轉自:http://jingyan.baidu.com/article/4b52d70255d7f0fc5d774b4d.html 1.假設你當前的winform已經okay了 2.解決方案中新建&q ...
hdu 2025
水題 AC代碼: #include using namespace std; int main() { char a[100],*p; int max,i; whil ...
理解 backbone.js 中的 bind 和 bindAll 方法,關于如何在方法中指定其中的 this,包含apply方法的說明[轉載]
轉載自:http://gxxsite.com/content/view/id/132.html 在backbone.js的學習過程中,被bind和bindAll弄得有點暈,這里包括underscore ...
IAM
IAM 與 權限訪問控制機制 IAM , Identity and Access Management 基本概念 ARN, Amazon Resource Name : 在 AWS 里, 創建的任何資 ...
ASP.NET重寫Render 加載CSS樣式文件和JS文件(切換CSS換皮膚)
網頁換皮膚的方式有很多種,最簡單的通常就是切換頁面CSS,而CSS通常寫在外部CSS文件里.那么切換CSS其實就是更換html里的link href路徑.我在網上搜索了下. 一般有兩種方式: 1.頁面 ...
js中怎么為同級元素添加點擊事件
事件件是javascript腳本語言的重要組成部分,因為有事件才使用戶頁面的體驗更加的美好.元素添加事件是js語言中最基礎的.我們可以為元素本身添加事件,也可以通過事件綁定和事件監聽為元素的父元素和子 ...
linux 安裝 zookeeper 集群
關閉防火墻 systemctl stop firewalld.service systemctl disable firewalld.servicesystemctl status firewalld ...
總結
以上是生活随笔為你收集整理的python脚本迁移数据库_Python迁移MySQL数据到MongoDB脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python的心得体会200字_pyth
- 下一篇: python事件触发机制_Python3