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 相关文章推荐
在Apache服务器上同时运行多个Django程序的方法
Jul 22 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
Django入门使用示例
Dec 12 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
Python发送邮件功能示例【使用QQ邮箱】
Dec 04 Python
利用arcgis的python读取要素的X,Y方法
Dec 22 Python
python仿evething的文件搜索器实例代码
May 13 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
python反转列表的三种方式解析
Nov 08 Python
PyCharm第一次安装及使用教程
Jan 08 Python
django数据模型中null和blank的区别说明
Sep 02 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
PHP的异常处理类Exception的使用及说明
2012/06/13 PHP
php操作csv文件代码实例汇总
2014/09/22 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
Notify - 基于jquery的消息通知插件
2011/10/18 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
nodejs连接mysql数据库简单封装示例-mysql模块
2017/04/10 NodeJs
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
一文读懂ES7中的javascript修饰器
2019/05/06 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
2019/07/25 jQuery
js实现右键弹出自定义菜单
2020/09/08 Javascript
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
2017/05/25 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
python实现贪吃蛇小游戏
2020/03/21 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
Python OpenCV去除字母后面的杂线操作
2020/07/05 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
英国建筑用品在线:Building Supplies Online(BSO)
2018/04/30 全球购物
几个数据库方面的面试题
2016/07/01 面试题
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
企业员工培训感言
2014/02/26 职场文书
科级干部群众路线教育实践活动对照检查材料思想汇报
2014/09/20 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript