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爬虫教程之爬取百度贴吧并下载的示例
Mar 07 Python
python处理圆角图片、圆形图片的例子
Apr 25 Python
Python探索之Metaclass初步了解
Oct 28 Python
python 对dataframe下面的值进行大规模赋值方法
Jun 09 Python
使用Python实现毫秒级抢单功能
Jun 06 Python
python快速编写单行注释多行注释的方法
Jul 31 Python
python函数的作用域及关键字详解
Aug 20 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
python用requests实现http请求代码实例
Oct 31 Python
浅谈Django2.0 加xadmin踩的坑
Nov 15 Python
python -v 报错问题的解决方法
Sep 15 Python
python Tornado框架的使用示例
Oct 19 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
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
php格式化日期实例分析
2014/11/12 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
Vue数据驱动模拟实现5
2017/01/13 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
vue--vuex详解
2019/04/15 Javascript
Js实现复选框的全选、全不选反选功能代码实例
2020/02/28 Javascript
[07:25]DOTA2-DPC中国联赛2月5日Recap集锦
2021/03/11 DOTA
python 图片验证码代码分享
2012/07/04 Python
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
centos 下面安装python2.7 +pip +mysqld
2014/11/18 Python
Python实现大文件排序的方法
2015/07/10 Python
python实现给数组按片赋值的方法
2015/07/28 Python
python ddt实现数据驱动
2018/03/14 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
Python提取转移文件夹内所有.jpg文件并查看每一帧的方法
2019/06/27 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
python 代码运行时间获取方式详解
2020/09/18 Python
Python绘制数码晶体管日期
2021/02/19 Python
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
手机配件第一品牌:ZAGG
2017/05/28 全球购物
欧舒丹美国官网:L’Occitane美国
2018/02/23 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
节约粮食标语
2014/06/18 职场文书
职工擅自离岗检讨书
2014/09/23 职场文书
团代会邀请函
2015/02/02 职场文书
2015年幼儿园中班下学期工作总结
2015/05/22 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
业务员管理制度范本
2015/08/06 职场文书
详解JAVA中的OPTIONAL
2021/06/14 Java/Android
CSS实现渐变色边框(Gradient borders)的5种方法
2022/03/25 HTML / CSS