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脚本的方法相关推荐

  1. python元组读取到列表_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)...

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  2. python解压zip文件_Python中最快解压zip文件的方法

    假设现在的上下文(LCTT 译注:context,计算机术语,此处意为业务情景)是这样的:一个 zip 文件被上传到一个Web 服务中,然后 Python 需要解压这个 zip 文件然后分析和处理其中 ...

  3. python字典按照key排序_python中字典按key值排序的实现方法

    之前小编介绍了字典本身不可排序,但按值可以,小编也介绍了按value值排序的三种方法.sorted()函数可以对数字或字符串进行排序,按key排序只是输出的key值的排序列表,使用sorted()函数 ...

  4. mysql doc插入数据_如何向MySQL数据库的表中录入数据.doc

    如何向MySQL数据库的表中录入数据 当建好了数据库及表时,首先想到的就是向数据库的表中输入数据,这就涉及到如何向数据库录入数据,下面我们就来探讨一下这个问题. 1.常用的方法是使用insert语句( ...

  5. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  6. Mysql之向表中插入数据

    Mysql之向表中插入数据 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT INTO table_name ( field1, field2,...f ...

  7. vscode+phpstudy连接使用mysql(解决phpstudy中mysql无法启动的问题)

    vscode+phpstudy连接使用mysql(解决phpstudy中mysql无法启动的问题) 使用vscode+phpstudy配置php开发环境网上很文章都是挺好的,都成功解决了我的问题.但是 ...

  8. python文本筛选_使用python对多个txt文件中的数据进行筛选的方法

    使用python对多个txt文件中的数据进行筛选的方法 一.问题描述 筛选出多个txt文件中需要的数据 二.数据准备 这是我自己建立的要处理的文件,里面是随意写的一些数字和字母 三.程序编写 impo ...

  9. Python之pandas:对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略

    Python之pandas:对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 目录 对pandas中dataframe数据中的索引输出.修改.重命名等详细攻略 知识点学习 输 ...

最新文章

  1. 构建未来情报体系—— AI及大数据时代情报分析人员的战略价值
  2. CallByName的一些缺陷
  3. 【蓝桥杯】历届试题 地宫取宝
  4. Windows最全快捷键
  5. 如何使用json开发web_如何通过使用JSON Web令牌简化应用程序的身份验证
  6. nginx php怎么配置伪静态,nginx rewrite 伪静态配置参数和使用例子
  7. 组网胖模式_胖瘦AP组网优劣对比,你知道吗?
  8. adsense 注册_adsense在注册时的注意事项
  9. tensorflow 小于_TensorFlow做Sparse Machine Learning
  10. 模板题——图论相关(1)
  11. 腾讯云短信服务的简单使用
  12. 前台服务java.lang.SecurityException: Permission Denial: startForeground
  13. 使用Kali对网站进行DDos攻击
  14. 解决IIS无响应假死状态
  15. 软件开发的12大定律,你是否使用了呢
  16. 教你免费且快速地搭建个人网站
  17. OmniPlayer Pro for Mac v1.4.12 支持无线投屏的视频播放器
  18. 什么是 5G CPE
  19. 2022年全国最新消防设施操作员模拟试题题库及答案
  20. golang []byte转json和json转[]byte

热门文章

  1. Fleury算法找欧拉环游
  2. VUE.js项目中控制台报错: Uncaught (in promise) NavigationDuplicated解决方法
  3. 分布式搜索引擎ElasticSearch+Kibana (Marvel插件安装详解)
  4. 总结一些关于操作数据库是sql语句还是存储过程问题
  5. 276. Paint Fence
  6. selenium python (七)层级定位(二次定位)
  7. Linux文件查找命令find
  8. UA OPTI512R 傅立叶光学导论 透镜成像系统例题
  9. UA MATH563 概率论的数学基础 中心极限定理4 独立一元随机变量的性质
  10. UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式