`
oruja
  • 浏览: 9851 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

python实现mysql数据迁移

阅读更多
    服务器为普通PC机,双核,4G,装的mysql4.1,数据库大小已经到了21GB,平均每张表中的记录都超过了一百万条,select语句速度非常快,但是count语句查下来需要4秒多,开始的想法是在分页时先select,将结果返回到页面展示给用户后再自动激活javascript代码调用统计的java代码,在五秒内将统计结果刷新在页面上,各位老大有什么更好的办法请指点一下。
    一直搞不懂为什么有人喜欢用旧的东西,稳定吗?mysql5也有稳定版本啊,sco unix好?怎么我就觉得OpenSolaris好呢?tomcat也要用5.5的,struts用1.x的。你们用你们的,我用我的,装上 Ubuntu,OpenSolaris,eclipse3.4,tomcat6,mysql6 alpha。
    为了证明新的比旧的要好,加上同事每次导数据都是手动操作,cat出来再cat进去,看着我都紧张。加上Python已经上手了,决定写个批处理自动迁移数据。
    先下载mysql针对python的驱动,build,install,完成后就可以继续了。
    由于数据量很大,我分给linux的分区总共只有20G,所以只好将mysql6安装到了windows分区中,这样的话每次开机都要挂载该分区才能启动mysql,而且由于不是linux专有分区,所以读写速度比安装linux分区中要慢。
    为了不破坏数据,新建的数据库表中id不设为auto_increment,等所有数据成功导入后再alter。
    以下是示例:
   

 以上由于javaeye不能在firefox中粘贴,所以就以代码形式弄上去了。

以下数据库连接部分需要注意字符設置

#-*- coding: utf-8 -*-,
#coding = utf-8
from MySQLdb import *

def conn(a,b):
	conn_local = Connection('127.0.0.1','mysql','','test')
	conn_server = Connection('192.168.1.99','root','123456','indiglib')
	cur_server=conn_server.cursor()
	cur_local = conn_local.cursor()
	for i in range(a,b):
		cur_server.execute("select * from i_biblios where id='"+str(i)+"'")
		row=cur_server.fetchone()
		if row ==None:
			continue
		for j in (0,3):
			if row[j]=='NULL':
				row[j]=''
		cur_local.execute("insert into i_biblios(id,rectype,datatype,format,mdata,userid) values('"+str(row[0])+"','"+str(row[1])+"','"+str(row[2])+"','"+str(row[3])+"','"+str(row[4])+"','admin')")
		print "the record NO. is  %d" % (i, )
	conn_server.commit()
	conn_local.commit()
	cur_server.close()
	cur_local.close()
	conn_server.close()
	conn_local.close()

if __name__=='__main__':
	conn(9,20)

 使用时可直接修改conn(9,20)中的值,也可以像下面代码中那样调用模块:

import datetime
import connect

def getTime():
	pre = datetime.datetime.now()
	connect.conn(700000,800000)
	now = datetime.datetime.now()
	print now-pre

if __name__=='__main__':
	getTime()

    以上只是例子,实际使用时有部分改变。

    我为什么要一条一条地查而不是一次全弄出来呢?因为在这个基础上,后面还需要要用到统计输出某些id信息。

    弄完后再用count语句,速度快了不少,现在只需要3秒2就可以出来了,而且还是运行在windows挂载分区中,如果给我的机器换成服务器的配置,再给加点空间,速度肯定会更快的。

2
0
分享到:
评论
2 楼 oruja 2008-11-25  
ShiningRay 写道

为何不直接使用sql脚本何况现在mysql已经支持了存储过程、游标等东西

因为我要练练python
1 楼 ShiningRay 2008-11-25  
为何不直接使用sql脚本
何况现在mysql已经支持了存储过程、游标等东西

相关推荐

    python制作mysql数据迁移脚本

    用python写了个数据迁移脚本,主要是利用从库将大的静态表导出表空间,载导入到目标实例中。 #!/usr/bin/env python3 #-*- coding:utf8 -*- #author:zhanbin.liu #!!!!!DB必须同版本 #python3环境 pip3 install ...

    用Python将mysql数据导出成json的方法

    标题中的“用Python将mysql数据导出成json的方法”指的是使用Python编程语言,结合相关库,将MySQL数据库中的数据转换并保存为JSON格式的文件。这个过程通常在数据分析、数据迁移或者API接口开发等场景中非常有用。...

    Python-同步mysql数据到elasticsearch的工具

    "Python-同步mysql数据到elasticsearch的工具"正是为了实现这一目的,它提供了便捷的解决方案。 该工具主要基于Python编程语言开发,利用Python的灵活性和强大的库支持,实现了数据迁移的功能。Python的PyMySQL库...

    Python中MySQL数据迁移到MongoDB脚本的方法

    这篇教程主要介绍了如何使用Python脚本来实现MySQL数据迁移到MongoDB的过程。以下是对这个过程的详细说明: **MongoDB简介** MongoDB是一个开源的、基于分布式文件存储的NoSQL数据库系统,由C++编写。它的设计目标...

    Python+MySQL分表分库实战

    Python可以编写脚本,通过SQL语句实现数据的导入导出,使用`pandas`库进行数据预处理和分析,确保数据的一致性。 3. **分布式数据库工具**:还有一些Python库如`shardingsphere`、`pyodbc`等,它们提供了分库分表的...

    DataX数据的迁移(MySQL、HDFS,Hive)

    1.将Mysql中的数据迁移到Hdfs文件系统中,然后通过Hive加载HDFS文件系统中的数据值 2.将Hive中的数据迁移到指定Mysql数据库中 注意点: 1.数据迁移的过程中,由于hive的Null值存储为"\N",Mysql存储为NULL值,二者...

    Python与MySQL分表分库实战

    `pymysql`是Python中的纯Python实现的MySQL驱动,而`mysql-connector-python`是MySQL官方提供的Python驱动,支持Python 2和3。两者都能完成基本的数据库连接、查询、插入、更新和删除等操作。 在进行分表分库实战时...

    python-mysql-replication-main.zip

    - 实时数据迁移:例如,从旧的MySQL数据库向新的数据库系统迁移数据。 - 数据库审计:跟踪和记录所有的数据变更。 - 分析工具:在不影响生产环境的情况下,分析大量数据库操作。 - 数据备份和恢复:结合备份策略,...

    mysql数据迁移到mysql源代码.zip

    这些脚本可能使用了SQL语句、shell脚本、Python、Perl或其他编程语言编写,以实现数据迁移的自动化。 需要注意的是,迁移大型数据库时,性能优化和并发控制是非常重要的,以减少停机时间。此外,考虑到数据一致性,...

    基于Python实现用于解析和转换 MySQL 二进制日志(binlog)的工具源码

    通过理解binlog的原理和Python相关库,我们可以实现高效的数据同步、迁移和分析功能,同时为数据库管理带来便利。对于`reverse-sql-reverse_sql_progress`这样的工具,深入学习其用法和源码,可以提升我们在数据库...

    mysql和Oracle数据互相迁移

    Oracle和Mysql互相迁移数据,可同时迁移多个不同数据库数据(并发的将数据在oracle和mysql之间随意迁移),效率高(实际测试表明,将100万数据从oracle迁移到mysql耗时2分30秒,其中1分30秒耗在oracle查询上),支持...

    使用python将Excel数据导入到MySQL数据库

    本文将详细讲解如何使用Python这一强大的编程语言将Excel数据导入到MySQL数据库,以便更好地管理和操作数据。 首先,我们需要了解Python中的两个关键库:`pandas`和`mysql-connector-python`。`pandas`库提供了一种...

    python实现数据库跨服务器迁移

    在进行数据库跨服务器迁移时,代码示例展示了一个使用`MySQLdb`库来实现MySQL数据库间的数据迁移的过程。这里主要介绍了以下步骤: 1. 连接数据库:使用`MySQLdb.connect()`函数连接到源数据库和目标数据库。 2. ...

    《自动化Excel数据批量导入MySQL:使用Python与Pandas构建高效数据迁移工具,上亿数据量半小时搞定》

    在当今的数据驱动环境中,数据迁移是连接不同数据源、实现数据共享与分析的重要环节。本文介绍了一个使用Python编程语言结合Pandas库和SQLAlchemy库构建的自动化工具,该工具能够高效地将Excel文件中的数据批量导入...

    mysql_python

    `pymysql`兼容Python 3,且API与MySQLdb相似,易于迁移。`mysql-connector-python`是MySQL官方提供的库,支持Python 2和3,同时提供了更多的特性,如连接池管理和事务控制。 总之,当在Windows环境下使用Python 2.x...

    mongo数据迁移到mysql的python脚本

    mongodb的数据迁移到mysql数据库中脚本, 在迁移前需要将mysql的表创建完成,他只负责数据同步

Global site tag (gtag.js) - Google Analytics