当前位置:  数据库>oracle

异构数据库多线程大表数据同步工具(支持oracle2mysql,mysql2oracle...)

    来源: 互联网  发布时间:2017-04-27

    本文导语: 最近项目需要快速的拖取Oracle大容量表的数据到MYSQL中,因此写了一个多线程并发的java数据拖取工具,在此基础上抽象了一个比较通用的工具,目前是基于JDBC方式,因此支持oracle2oracle,oracle2mysql,mysql2mysql,mysql2oracle,mysql2sqlse...

最近项目需要快速的拖取Oracle大容量表的数据到MYSQL中,因此写了一个多线程并发的java数据拖取工具,在此基础上抽象了一个比较通用的工具,目前是基于JDBC方式,因此支持oracle2oracle,oracle2mysql,mysql2mysql,mysql2oracle,mysql2sqlserver,sqlserver 2mysql等等,通过测试目前有oracle2mysql,mysql2oracle,支持windows和Linux。下面说明下使用方法和测试的用例。

第一步,配置需要同步的数据库和表,打开conf文件下的config.properties,conf文件下包含了其他数据同步的模版,下面举例多线程同步mysql的表到oracle中,config.properties是如何配置的。

#for source database parameters
source.dataSource.initialSize=10
source.dataSource.maxIdle=20
source.dataSource.minIdle=5
source.dataSource.maxActive=100
source.dataSource.maxWait=120000
source.jdbc.driverClassName=com.mysql.jdbc.Driver
source.jdbc.url=jdbc:mysql://10.224.56.188 : 3306/meetingdb?autoReconnect=true&characterEncoding=UTF-8
source.jdbc.username=test
source.jdbc.password=pass
#Target sync data threadNum=source.database.threadNum
source.database.threadNum=10
source.database.selectSql=select * from  test  where mod(CAST(FNV_64(PATHALIASID) AS UNSIGNED),#threadNum#)=?
#you can input many commands and split by ";" ,你可以打开注释加一些session级别的优化命令
#source.database.sessionCommand=ALTER SESSION SET DB_FILE_MULTIBLOCK_READ_COUNT=128;
#for target jdbc parameters
target.dataSource.initialSize=10
target.dataSource.maxIdle=20
target.dataSource.minIdle=5
target.dataSource.maxActive=100
target.dataSource.maxWait=120000
target.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
target.jdbc.url=jdbc: oracle: thin : @10.224.56.189:1521:PERFCON1
target.jdbc.username=test
target.jdbc.password=pass
target.database.insertSql=insert into test2(PATHALIASID,PATH,CREATETIME,LASTMODIFIEDTIME,OBJECTPREFIX,PATHMD5ID,COLLIDESWITH) values(?,?,?,?,?,?,?)
target.database.commitNum=1000

























第二步,运行dataSync.sh或者dataSync.bat,开始同步数据。


具体的测试的用例如下:


Case 1 : oracle to mysql with multi_threads
source table:test
target table:test2
source.database.selectSql=select * from  test  where ORA_HASH(PATHALIASID,#threadNum#)=?




exeSql=select * from  test where ORA_HASH(PATHALIASID,10)=10
...
exeSql=select * from  test  where ORA_HASH(PATHALIASID,10)=0



mysql> select count(*) from test2;
+----------+
| count(*) |
+----------+
|    218850 |
+----------+





Case 2 : mysql to oracle with multi_threads
source table:test
target table:test2
source.database.selectSql=select * from  test where mod(CAST(FNV_64(PATHALIASID) AS UNSIGNED),#threadNum#)=?


 

exeSql=select * from  test where mod(CAST(FNV_64(PATHALIASID) AS UNSIGNED),10)=10
...
exeSql=select * from  test where mod(CAST(FNV_64(PATHALIASID) AS UNSIGNED),10)=0
SQL>select count(*) from test2;
  COUNT(*)
----------
     218850
 
case 3 :mysql to oracle with single process.
source.database.threadNum=1
source.database.selectSql=select * from  test
exeSql=select * from  test










SQL>select count(*) from test2;
  COUNT(*)
----------
     218850


获取可以运行的二进制运行程序或者源码,代码是完全free的,可以从以下地址获取:

免费下载地址在 http://linux.linuxidc.com/

用户名与密码都是www.linuxidc.com

具体下载目录在 /2012年资料/6月/1日/异构数据库多线程大表数据同步工具/

更多Oracle相关信息见 专题页面


    
 
 

您可能感兴趣的文章:

  • 基于Key-Value的NOSQL数据库Redis的数据结构及常用相关命令介绍
  • 如何监控数据库的数据,如果数据库数据更改,就通知Server
  • 文档数据库mongodb与列式数据库hbase详细比较
  • 如何从数据库中或文本文件中提取数据到另一个数据库中?
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • 用JDBC连接Oracle数据库时,如何向数据库中写日期型数据(格式)?谢了!
  • nosql数据库levedb介绍及levedb最新版1.18下载安装
  • 我从JSP页将数据插入到oracle数据库中,为何汉字插入后数据库中显示为乱码呢?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 散分:Jbuilder6开发数据库应用请问你们都用什么数据库? 免费的数据库有那些?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 数据在页面写不进数据库,也不可以从数据库中读出是什么原因?
  • ORACLE数据库常用字段数据类型介绍
  • mysql 本地数据库如何从远程数据库导数据
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • 公司要给客户做报表,从数据库返回数据,他们死活要返回的格式为Excel格式,请问我怎样才能把数据库返回的数据存为Excel的格式?
  • 删除数据库中重复记录方法介绍及代码参考
  • 开发java下的数据库程序,用什么数据库引擎?
  • Mongodb数据库服务的开启与关闭详细介绍
  • 请问各位朋友:在JAVA的数据库应用管理系统中,如何不在操作系统忠建立数据源便能连接数据库(如ACCESS、MS SQL 等等
  • 如何实现 coreos 下Docker 与分布式数据库结合
  • sql 语句 取数据库服务器上所有数据库的名字
  • 在数据库应用中,多线程须不需要考虑同步问题,急!谢谢
  • 在线等待:用子线程与ORACLE数据库建立连接的问题。
  • 在servlet里访问数据库要不要建线程
  • 求助!关于多线程下数据库操作的问题,请大家帮忙看看
  • 谁能告诉我,做一个象网易那样的聊天室,用什么方法,不要告诉我是用数据库或读写文件,是不是用多线程,socket协议。来讨论者皆有分。
  • 使用mydumper多线程备份MySQL数据库
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sql数据库如何查询修改数据库恢复模式?
  • 应该怎么样将一个对象放入到数据库里?还有怎么将图片放进数据库?急~~
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • linux上安装oracle 数据库后,是否能写shell程序实现数据库的自动启动。
  • 使用php语句将数据库*.sql文件导入数据库
  • sql数据库修改数据库用户
  • java数据库连接池和数据库连接示例
  • 对数据库的查询结果resultset进行修改后,怎么将修改的信息传回给数据库
  • java中的数据库结果集可以被赋值吗,可以通过结果集的方法来更新数据库字段吗?
  • 请教在linux系统开发环境下,有没有db和dbf数据库引擎,如何使用这个数据库?
  • 手把手教你Oracle数据库导出数据库结构到PowerDesigner
  • 此数据库没有有效所有者,因此无法安装数据库关系图支持对象
  • linux下不知有什么小型的数据库?要求速度比较快,开销最小。并且支持单文件数据库及多表的
  • 将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库
  • 请问在java钟如何得到数据库中的记录总数,以及如何求数据库中一个字段的和?
  • 求数据库解决方案===求数据库解决方案
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍 iis7站长之家
  • 在jbuilder中调用一bean连接数据库没有问题,在jsp中调用就连接不上数据库
  • sql server 2008中备份集中的数据库备份与现有的xx数据库不同的解决方法
  • java开发数据库,一般是用JDBC-ODBC桥,还是JDBC驱动程序连接数据库呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,