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易忽视知识点小结
May 25 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
Feb 22 Python
更改Python的pip install 默认安装依赖路径方法详解
Oct 27 Python
Python图像处理之gif动态图的解析与合成操作详解
Dec 30 Python
python openpyxl使用方法详解
Jul 18 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
Aug 22 Python
python 如何设置守护进程
Oct 29 Python
pycharm最新激活码有效期至2100年(亲测可用)
Feb 05 Python
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
Apr 03 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
Yii框架安装简明教程
2020/05/15 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
jquery 学习之二 属性相关
2010/11/23 Javascript
从URL中提取参数与将对象转换为URL查询参数的实现代码
2012/01/12 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
详解NodeJs开发微信公众号
2018/05/25 NodeJs
使用electron实现百度网盘悬浮窗口功能的示例代码
2018/10/24 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
2019/11/29 Javascript
python发送邮件接收邮件示例分享
2014/01/21 Python
python利用微信公众号实现报警功能
2018/06/10 Python
解决Python下imread,imwrite不支持中文的问题
2018/12/05 Python
解决Pycharm界面的子窗口不见了的问题
2019/01/17 Python
python爬虫简单的添加代理进行访问的实现代码
2019/04/04 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
python利用tkinter实现屏保
2019/07/30 Python
PyQT5 emit 和 connect的用法详解
2019/12/13 Python
Python使用monkey.patch_all()解决协程阻塞问题
2020/04/15 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
浅析python连接数据库的重要事项
2021/02/22 Python
HTML5 Blob对象的具体使用
2020/05/22 HTML / CSS
美国在线面料商店:Online Fabric Store
2018/07/26 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
教育学专业毕业生的自我评价
2013/11/21 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
数控机床专业自荐信
2014/05/19 职场文书
2014年个人业务工作总结
2014/11/17 职场文书
餐厅收银员岗位职责
2015/04/07 职场文书
小学语文教师研修日志
2015/11/13 职场文书
Android存储中最基本的文件存储方式
2022/04/30 Java/Android