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 相关文章推荐
在Windows系统上搭建Nginx+Python+MySQL环境的教程
Dec 25 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
python之virtualenv的简单使用方法(必看篇)
Nov 25 Python
利用Python yagmail三行代码实现发送邮件
May 11 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
Nov 10 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
解决python -m pip install --upgrade pip 升级不成功问题
Mar 05 Python
Python接口自动化测试的实现
Aug 28 Python
python如何写个俄罗斯方块
Nov 06 Python
python 实现一个简单的线性回归案例
Dec 17 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适配器模式(Adapter)
2014/11/25 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
js Html结构转字符串形式显示代码
2011/11/15 Javascript
jQuery判断iframe中元素是否存在的方法
2013/05/11 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
python中from module import * 的一个坑
2014/07/20 Python
Python下线程之间的共享和释放示例
2015/05/04 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
Python将列表数据写入文件(txt, csv,excel)
2019/04/03 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
python通过opencv实现图片裁剪原理解析
2020/01/19 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
什么是python的函数体
2020/06/19 Python
python对 MySQL 数据库进行增删改查的脚本
2020/10/22 Python
使用Python画了一棵圣诞树的实例代码
2020/11/27 Python
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
小学生检讨书大全
2014/02/06 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
求职意向书
2014/07/29 职场文书
七一建党日演讲稿
2014/09/05 职场文书
怎样写离婚协议书
2015/01/26 职场文书
学校节水倡议书
2015/04/29 职场文书
学习党章心得体会2016
2016/01/15 职场文书
CSS3实现360度循环旋转功能
2022/02/12 HTML / CSS