python做mysql数据迁移_Python中MySQL数据迁移到MongoDB脚本的方法
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数据迁移消耗的时间。
您可能感兴趣的文章:每天迁移MySQL历史数据到历史库Python脚本MySQL数据库迁移data文件夹位置详细步骤MySQL下海量数据的迁移步骤分享mysql5.5数据库data目录迁移方法详解mysql 备份与迁移 数据同步方法python制作mysql数据迁移脚本
python做mysql数据迁移_Python中MySQL数据迁移到MongoDB脚本的方法相关推荐
- python元组读取到列表_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...
如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...
- python解压zip文件_Python中最快解压zip文件的方法
假设现在的上下文(LCTT 译注:context,计算机术语,此处意为业务情景)是这样的:一个 zip 文件被上传到一个Web 服务中,然后 Python 需要解压这个 zip 文件然后分析和处理其中 ...
- python字典按照key排序_python中字典按key值排序的实现方法
之前小编介绍了字典本身不可排序,但按值可以,小编也介绍了按value值排序的三种方法.sorted()函数可以对数字或字符串进行排序,按key排序只是输出的key值的排序列表,使用sorted()函数 ...
- mysql doc插入数据_如何向MySQL数据库的表中录入数据.doc
如何向MySQL数据库的表中录入数据 当建好了数据库及表时,首先想到的就是向数据库的表中输入数据,这就涉及到如何向数据库录入数据,下面我们就来探讨一下这个问题. 1.常用的方法是使用insert语句( ...
- Python基础_第5章_Python中的数据序列
Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...
- Mysql之向表中插入数据
Mysql之向表中插入数据 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...f ...
- vscode+phpstudy连接使用mysql(解决phpstudy中mysql无法启动的问题)
vscode+phpstudy连接使用mysql(解决phpstudy中mysql无法启动的问题) 使用vscode+phpstudy配置php开发环境网上很文章都是挺好的,都成功解决了我的问题.但是 ...
- python文本筛选_使用python对多个txt文件中的数据进行筛选的方法
使用python对多个txt文件中的数据进行筛选的方法 一.问题描述 筛选出多个txt文件中需要的数据 二.数据准备 这是我自己建立的要处理的文件,里面是随意写的一些数字和字母 三.程序编写 impo ...
- Python之pandas:对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略
Python之pandas:对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 目录 对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 知识点学习 输 ...
最新文章
- 构建未来情报体系—— AI及大数据时代情报分析人员的战略价值
- CallByName的一些缺陷
- 【蓝桥杯】历届试题 地宫取宝
- Windows最全快捷键
- 如何使用json开发web_如何通过使用JSON Web令牌简化应用程序的身份验证
- nginx php怎么配置伪静态,nginx rewrite 伪静态配置参数和使用例子
- 组网胖模式_胖瘦AP组网优劣对比,你知道吗?
- adsense 注册_adsense在注册时的注意事项
- tensorflow 小于_TensorFlow做Sparse Machine Learning
- 模板题——图论相关(1)
- 腾讯云短信服务的简单使用
- 前台服务java.lang.SecurityException: Permission Denial: startForeground
- 使用Kali对网站进行DDos攻击
- 解决IIS无响应假死状态
- 软件开发的12大定律,你是否使用了呢
- 教你免费且快速地搭建个人网站
- OmniPlayer Pro for Mac v1.4.12 支持无线投屏的视频播放器
- 什么是 5G CPE
- 2022年全国最新消防设施操作员模拟试题题库及答案
- golang []byte转json和json转[]byte
热门文章
- Fleury算法找欧拉环游
- VUE.js项目中控制台报错: Uncaught (in promise) NavigationDuplicated解决方法
- 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)
- 总结一些关于操作数据库是sql语句还是存储过程问题
- 276.	Paint Fence
- selenium python (七)层级定位(二次定位)
- Linux文件查找命令find
- UA OPTI512R 傅立叶光学导论 透镜成像系统例题
- UA MATH563 概率论的数学基础 中心极限定理4 独立一元随机变量的性质
- UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式