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实现的一个p2p文件传输实例
Jun 04 Python
Python实现对excel文件列表值进行统计的方法
Jul 25 Python
python验证码识别的实例详解
Sep 09 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
Python3使用turtle绘制超立方体图形示例
Jun 19 Python
django DRF图片路径问题的解决方法
Sep 10 Python
Python实现分段线性插值
Dec 17 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
python实时检测键盘输入函数的示例
Jul 17 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
python isinstance函数用法详解
Feb 13 Python
在PyTorch中使用标签平滑正则化的问题
Apr 03 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
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
浅析php原型模式
2014/11/25 PHP
thinkPHP中create方法与令牌验证实例浅析
2015/12/08 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
js鼠标滑过弹出层的定位IE6bug解决办法
2012/12/26 Javascript
jQuery Ajax异步处理Json数据详解
2013/11/05 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
js+jquery常用知识点汇总
2015/03/03 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
SpringMVC+bootstrap table实例详解
2017/06/02 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
JS获取url参数,JS发送json格式的POST请求方法
2018/03/29 Javascript
详解vue如何使用rules对表单字段进行校验
2018/10/17 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
Vue如何跨组件传递Slot的实现
2020/12/14 Vue.js
Python实现将16进制字符串转化为ascii字符的方法分析
2017/07/21 Python
python使用udp实现聊天器功能
2018/12/10 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
中学教师实习自我鉴定
2013/09/28 职场文书
绝对经典成功的大学生推荐信
2013/11/08 职场文书
《我不是最弱小的》教学反思
2014/02/23 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
2014年党员评议表自我评价
2014/09/27 职场文书
2014年村委会工作总结
2014/11/24 职场文书
2014年医院个人工作总结
2014/12/09 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
导游词之贵州百里杜鹃
2019/10/29 职场文书
JS一分钟在github+Jekyll的博客中添加访问量功能的实现
2021/04/03 Javascript
python opencv通过按键采集图片源码
2021/05/20 Python
利用Apache Common将java对象池化的问题
2022/06/16 Servers