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程序抓取新浪在国内的所有IP的教程
May 04 Python
简单谈谈Python中的反转字符串问题
Oct 24 Python
Python使用微信SDK实现的微信支付功能示例
Jun 30 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
Nov 16 Python
python定时关机小脚本
Jun 20 Python
python机器人运动范围问题的解答
Apr 29 Python
Python操作远程服务器 paramiko模块详细介绍
Aug 07 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
Python 按比例获取样本数据或执行任务的实现代码
Dec 03 Python
Python日志打印里logging.getLogger源码分析详解
Jan 17 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
Mar 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 google或baidu分页代码
2009/11/26 PHP
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
jQuery each()小议
2010/03/18 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
javascript解三阶幻方(九宫格)
2015/04/22 Javascript
Javascript实现商品秒杀倒计时(时间与服务器时间同步)
2015/09/16 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
简单理解Vue中的nextTick方法
2018/01/30 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
vue(2.x,3.0)配置跨域代理
2019/11/27 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
vue-router之解决addRoutes使用遇到的坑
2020/07/19 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
python的re模块应用实例
2014/09/26 Python
Python读写/追加excel文件Demo分享
2018/05/03 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
python xpath获取页面注释的方法
2019/01/14 Python
Python下简易的单例模式详解
2019/04/08 Python
Django urls.py重构及参数传递详解
2019/07/23 Python
文员岗位职责
2013/11/09 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
财务工作检讨书
2014/10/29 职场文书
有关朝花夕拾的读书笔记
2015/06/29 职场文书
学习委员竞选稿
2015/11/20 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
Python 发送SMTP邮件的简单教程
2021/06/24 Python