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中的高级函数map/reduce使用实例
Apr 13 Python
详解Python中的变量及其命名和打印
Mar 11 Python
Python2.7简单连接与操作MySQL的方法
Apr 27 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
Python图片转换成矩阵,矩阵数据转换成图片的实例
Jul 02 Python
Python统计python文件中代码,注释及空白对应的行数示例【测试可用】
Jul 25 Python
numpy ndarray 取出满足特定条件的某些行实例
Dec 05 Python
python3中使用__slots__限定实例属性操作分析
Feb 14 Python
Django单元测试中Fixtures的使用方法
Feb 26 Python
Python 使用生成器代替线程的方法
Aug 04 Python
python获取本周、上周、本月、上月及本季的时间代码实例
Sep 08 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
Windows Apache2.2.11及Php5.2.9-1的安装与配置方法
2009/06/08 PHP
PHP实现连接设备、通讯和发送命令的方法
2015/10/13 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
mui开发中获取单选按钮、复选框的值(实例讲解)
2017/07/24 Javascript
vue-baidu-map 进入页面自动定位的解决方案(推荐)
2018/04/28 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
2018/08/25 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
[11:12]2018DOTA2国际邀请赛寻真——绿色长城OpTic
2018/08/10 DOTA
python数据类型_字符串常用操作(详解)
2017/05/30 Python
Python如何快速实现分布式任务
2017/07/06 Python
python实现批量修改文件名
2020/03/23 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
python实现在内存中读写str和二进制数据代码
2020/04/24 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
2021/03/03 Python
简单聊聊H5的pushState与replaceState的用法
2018/04/03 HTML / CSS
贝嫂喜欢的婴儿品牌,个性化的婴儿礼物:My 1st Years
2017/11/19 全球购物
幼儿园义卖活动方案
2014/01/17 职场文书
结对共建协议书
2014/08/20 职场文书
企业法人授权委托书范本
2014/09/23 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
公安纪律作风整顿心得体会
2016/01/23 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python