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实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
python验证码识别的实例详解
Sep 09 Python
Python实现PS滤镜的万花筒效果示例
Jan 23 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
python实现DEM数据的阴影生成的方法
Jul 23 Python
python根据文本生成词云图代码实例
Nov 15 Python
使用python的turtle绘画滑稽脸实例
Nov 21 Python
Pygame的程序开始示例代码
May 07 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
Python中random模块常用方法的使用教程
Oct 04 Python
基于 Python 实践感知器分类算法
Jan 07 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 CodeIgniter框架的工作原理研究
2015/03/30 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
flash javascript之间的通讯方法小结
2008/12/20 Javascript
点击文章内容处弹出页面代码
2009/10/01 Javascript
jquery获取input表单值的代码
2010/04/19 Javascript
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
JS中showModalDialog 的使用解析
2013/04/17 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
qq悬浮代码(兼容各个浏览器)
2014/01/29 Javascript
js获取浏览器基本信息大全
2014/11/27 Javascript
JavaScript实现99乘法表及隔行变色实例代码
2016/02/24 Javascript
jquery ezUI 双击行记录弹窗查看明细的实现方法
2016/06/01 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
谈谈React中的Render Props模式
2018/12/06 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
简单谈谈offsetleft、offsetTop和offsetParent
2020/12/04 Javascript
python实现屏保计时器的示例代码
2018/08/08 Python
基于Python函数和变量名解析
2019/07/19 Python
python2.7使用scapy发送syn实例
2020/05/05 Python
python属于软件吗
2020/06/18 Python
Django-Scrapy生成后端json接口的方法示例
2020/10/06 Python
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
adidas爱尔兰官方网站:阿迪达斯运动鞋和运动服
2019/11/01 全球购物
食品安全承诺书
2014/05/22 职场文书
小学生安全责任书
2014/07/25 职场文书
乡镇组织委员个人整改措施
2014/09/16 职场文书
2014年教务处工作总结
2014/12/03 职场文书
十佳少年事迹材料
2014/12/25 职场文书
交流会主持词
2015/07/02 职场文书
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python