Python中MySQL数据迁移到MongoDB脚本的方法


Posted in Python onApril 28, 2016

MongoDB简介

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

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-8import torndb,pymongo,time# connect to mysql databasemysql = torndb.Connection(host='127.0.0.1', database='database', user='username', password='password')#connect to mongodb and obtain total lines in mysqlmongo = pymongo.MongoClient('mongodb://ip').databasemongo.authenticate('username',password='password')countlines = mysql.query('SELECT max(table_field) FROM table_name')count = countlines[0]['max(table_field)']#count = 300print counti = 0 j = 100start_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 +=100end_time = time.time()deltatime = end_time - start_timetotalhour = 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数据迁移消耗的时间。

Python 相关文章推荐
Python time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
Python第三方库的安装方法总结
Jun 06 Python
Python编程使用NLTK进行自然语言处理详解
Nov 16 Python
Python Flask基础教程示例代码
Feb 07 Python
Python实现决策树C4.5算法的示例
May 30 Python
Python 实现「食行生鲜」签到领积分功能
Sep 26 Python
Win10下Python3.7.3安装教程图解
Jul 08 Python
python中return的返回和执行实例
Dec 24 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
总结python多进程multiprocessing的相关知识
Jun 29 Python
Python获取字典中某个key的value
Apr 13 Python
python遍历目录的方法小结
Apr 28 #Python
Python网络爬虫实例讲解
Apr 28 #Python
Python脚本实现自动发带图的微博
Apr 27 #Python
Python实现新浪博客备份的方法
Apr 27 #Python
Python2.7简单连接与操作MySQL的方法
Apr 27 #Python
Python判断文本中消息重复次数的方法
Apr 27 #Python
python脚本监控docker容器
Apr 27 #Python
You might like
实用函数2
2007/11/08 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
select 控制网页内容隐藏于显示的实现代码
2010/05/25 Javascript
ajax 缓存 问题 requestheader
2010/08/01 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
javascript判断css3动画结束 css3动画结束的回调函数
2015/03/10 Javascript
jquery判断复选框是否被选中的方法
2015/10/16 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
XMLHttpRequest Level 2 使用指南
2016/08/26 Javascript
微信JS-SDK自定义分享功能实例详解【分享给朋友/分享到朋友圈】
2016/11/25 Javascript
jQuery Validate验证表单时多个name相同的元素只验证第一个的解决方法
2016/12/24 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
2019/05/20 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
JavaScript 判断浏览器是否是IE
2021/02/19 Javascript
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
使用Python操作FTP实现上传和下载的方法
2019/04/01 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
scrapy头部修改的方法详解
2020/12/06 Python
AC Lens:购买隐形眼镜
2017/02/26 全球购物
文史专业毕业生自荐信
2013/11/17 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
出生公证书样本
2014/04/04 职场文书
保护环境的标语
2014/06/09 职场文书
财务会计岗位职责
2015/02/03 职场文书
医德医风个人总结
2015/02/28 职场文书
小学少先队活动总结
2015/05/08 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
基于Golang 高并发问题的解决方案
2021/05/08 Golang
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript