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 调用VC++的动态链接库(DLL)
Sep 06 Python
深入理解Python中的元类(metaclass)
Feb 14 Python
利用Python的Flask框架来构建一个简单的数字商品支付解决方案
Mar 31 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
使用python和Django完成博客数据库的迁移方法
Jan 05 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
Jul 19 Python
Python 70行代码实现简单算式计算器解析
Aug 30 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
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中目录,文件操作详谈
2007/03/19 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
php动态变量定义及使用
2015/06/10 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
PHP两种实现无级递归分类的方法
2017/03/02 PHP
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
jquery重新播放css动画所遇问题解决
2013/08/21 Javascript
js中一个函数获取另一个函数返回值问题探讨
2013/11/21 Javascript
JavaScript中的getDay()方法使用详解
2015/06/09 Javascript
JavaScript常用基础知识强化学习
2015/12/09 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
NodeJS简单实现WebSocket功能示例
2018/02/10 NodeJs
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
在layui中使用form表单监听ajax异步验证注册的实例
2019/09/03 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
Django项目创建到启动详解(最全最详细)
2019/09/07 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
机电工程学生自荐信范文
2013/12/07 职场文书
《藤野先生》教学反思
2014/02/19 职场文书
党支部承诺书范文
2014/03/28 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
新员工考核评语
2014/12/31 职场文书
财政局个人总结
2015/03/04 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
Python基础之元编程知识总结
2021/05/23 Python
Win11 vmware不兼容怎么办?Win11与VMware虚拟机不兼容的解决方法
2023/01/09 数码科技