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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
Python中实现远程调用(RPC、RMI)简单例子
Apr 28 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
Jul 24 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python多进程与服务器并发原理及用法实例分析
Aug 21 Python
利用ctypes获取numpy数组的指针方法
Feb 12 Python
75条笑死人的知乎神回复,用60行代码就爬完了
May 06 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
Python数据可视化:泊松分布详解
Dec 07 Python
flask框架url与重定向操作实例详解
Jan 25 Python
opencv python图像梯度实例详解
Feb 04 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
Dec 09 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
推荐一篇入门级的Class文章
2007/03/19 PHP
php adodb连接不同数据库
2009/03/19 PHP
一些需要禁用的PHP危险函数(disable_functions)
2012/02/23 PHP
PHP的Yii框架中移除组件所绑定的行为的方法
2016/03/18 PHP
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
深入理解$.each和$(selector).each
2016/05/15 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
react实现菜单权限控制的方法
2017/12/11 Javascript
实例学习JavaScript读取和写入cookie
2018/01/29 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
2018/02/08 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
vue.js的vue-cli脚手架中使用百度地图API的实例
2019/01/21 Javascript
vue自定义指令实现方法详解
2019/02/11 Javascript
Vue 按照创建时间和当前时间显示操作(刚刚,几小时前,几天前)
2020/09/10 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
JS实现简易日历效果
2021/01/25 Javascript
python遍历数组的方法小结
2015/04/30 Python
浅谈python中scipy.misc.logsumexp函数的运用场景
2016/06/23 Python
CentOS 7下安装Python 3.5并与Python2.7兼容并存详解
2017/07/07 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
python+opencv3生成一个自定义纯色图教程
2020/02/19 Python
Windows 下python3.8环境安装教程图文详解
2020/03/11 Python
详解Python调用系统命令的六种方法
2021/01/28 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
保护母亲河倡议书
2014/04/14 职场文书
2014年实习生工作总结
2014/11/27 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
黑白记忆观后感
2015/06/18 职场文书