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栈类实例分析
Jun 15 Python
Python中条件判断语句的简单使用方法
Aug 21 Python
解决Python requests 报错方法集锦
Mar 19 Python
对python的文件内注释 help注释方法
May 23 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
python图像和办公文档处理总结
May 28 Python
Django框架获取form表单数据方式总结
Apr 22 Python
详解Python IO编程
Jul 24 Python
Python变量及数据类型用法原理汇总
Aug 06 Python
基于Pytorch版yolov5的滑块验证码破解思路详解
Feb 25 Python
Python turtle实现贪吃蛇游戏
Jun 18 Python
Python机器学习之底层实现KNN
Jun 20 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+JS实现搜索自动提示(实例)
2013/06/09 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
2014/05/06 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
疯掉了,尽然有js写的操作系统
2007/04/23 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
全面解析node 表单的图片上传
2016/11/21 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
一个手写的vue放大镜效果
2019/08/09 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
python实现获取Ip归属地等信息
2016/08/27 Python
numpy中矩阵合并的实例
2018/06/15 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
python 通过麦克风录音 生成wav文件的方法
2019/01/09 Python
Python数学形态学实例分析
2019/09/06 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
CSS中的字体大小设置属性总结
2016/05/24 HTML / CSS
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
实习自我鉴定
2013/12/15 职场文书
2014年元旦活动方案
2014/02/15 职场文书
文科毕业生自荐书范文
2014/04/17 职场文书
小学综合实践活动总结
2014/07/07 职场文书
2014年科室工作总结范文
2014/12/19 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
邹越演讲观后感
2015/06/15 职场文书
能让Python提速超40倍的神器Cython详解
2021/06/24 Python