python脚本迁移数据库_Python迁移MySQL数据到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-8

import torndb,pymongo,time

# connect to mysql database

mysql = torndb.Connection(host='127.0.0.1', database='database', user='username', password='password')

#connect to mongodb and obtain total lines in mysql

mongo = pymongo.MongoClient('mongodb://ip').database

mongo.authenticate('username',password='password')

countlines = mysql.query('SELECT max(table_field) FROM table_name')

count = countlines[0]['max(table_field)']

#count = 300

print count

i = 0

j = 100

start_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 +=100

end_time = time.time()

deltatime = end_time - start_time

totalhour = 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数据迁移消耗的时间。

Linux Centos 迁移Mysql 数据位置

Linux Centos 迁移Mysql 数据位置 由于业务量增加导致安装在系统盘(20G)磁盘空间被占满了, 现在进行数据库的迁移. Mysql 是通过 yum 安装的. Centos6.5Mysq ...

迁移mysql数据到oracle上

转自:http://www.cnblogs.com/Warmsunshine/p/4651283.html 我是生成的文件里面的master.sql里面的sql,一个一个拷出来的. 迁移mysql数据 ...

python查询mysql数据&lpar;3&rpar;

python查询mysql数据(3) """数据查询""" import pymysql import datetime from pymy ...

python插入mysql数据&lpar;2&rpar;

python插入mysql数据(2) """插入操作""" import pymysql import datetime from pymy ...

【初学python】使用python连接mysql数据查询结果并显示

因为测试工作经常需要与后台数据库进行数据比较和统计,所以采用python编写连接数据库脚本方便测试,提高工作效率,脚本如下(python连接mysql需要引入第三方库MySQLdb,百度下载安装) # ...

HBase——使用Put迁移MySql数据到Hbase

先上code: /** * 功能:迁移mysql上电池历史数据到hbase * Created by liuhuichao on 2016/12/6. */ public class MySqlToH ...

python连接mysql数据表查询表获取数据导入到txt中

import pymysql'''连接mysql数据表查询表获取数据导入到txt中'''#查询结果写入数据到txtdef get_loan_number(file_txt): connect = py ...

python取mysql数据写入excel

环境:MySQLdb openpyxl模块 python去zabbix的mysql数据库中取交换机不同时间段的进出口流量,然后写入excel中,每天cron执行,每周四邮件发送.(代码中第一行必须加上 ...

python导出zabbix数据并发邮件脚本

Zabbix没有报表导出的功能,于是通过编写脚本导出zabbix数据并发邮件.效果如下: 下面是脚本,可根据自己的具体情况修改: #!/usr/bin/python #coding:utf-8 imp ...

随机推荐

&lbrack;麦先生&rsqb;SEO--相关优化【基础】

收录的一个重要原则:离首页的远近.离首页太远,不容易被收录.内页必须距离首页3-4次点击之内. 原因:1.对于一个网站来说,搜索引擎经常来的地方是首页,因为很多外部链接链向的是首页如友情链接.做的外链 ...

pod install出现&lbrack;&excl;&rsqb; &sol;bin&sol;bash -c错误&comma;Installing Realm报错

pod install出现错误,具体错误信息如下: Installing Realm () [!] /bin/bash -c set -e sh build.sh cocoapods-setup co ...

Oracle创建,删除用户与表空间

1.创建表空间与用户 a:创建数据表空间 create tablespace user_data logging datafile 'D:\oracle\product\10.2.0\oradata\ ...

如何利用VS2010安装和部署应用程序

转自:http://jingyan.baidu.com/article/4b52d70255d7f0fc5d774b4d.html 1.假设你当前的winform已经okay了 2.解决方案中新建&q ...

hdu 2025

水题 AC代码: #include using namespace std; int main() { char a[100],*p; int max,i; whil ...

理解 backbone&period;js 中的 bind 和 bindAll 方法,关于如何在方法中指定其中的 this,包含apply方法的说明&lbrack;转载&rsqb;

转载自:http://gxxsite.com/content/view/id/132.html 在backbone.js的学习过程中,被bind和bindAll弄得有点晕,这里包括underscore ...

IAM

IAM 与 权限访问控制机制 IAM , Identity and Access Management 基本概念 ARN, Amazon Resource Name : 在 AWS 里, 创建的任何资 ...

ASP&period;NET重写Render 加载CSS样式文件和JS文件&lpar;切换CSS换皮肤&rpar;

网页换皮肤的方式有很多种,最简单的通常就是切换页面CSS,而CSS通常写在外部CSS文件里.那么切换CSS其实就是更换html里的link href路径.我在网上搜索了下. 一般有两种方式: 1.页面 ...

js中怎么为同级元素添加点击事件

事件件是javascript脚本语言的重要组成部分,因为有事件才使用户页面的体验更加的美好.元素添加事件是js语言中最基础的.我们可以为元素本身添加事件,也可以通过事件绑定和事件监听为元素的父元素和子 ...

linux 安装 zookeeper 集群

关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.servicesystemctl status firewalld ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值