Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1332882
  • 博文数量: 185
  • 博客积分: 50
  • 博客等级: 民兵
  • 技术积分: 3934
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-11 13:11
个人简介

iihero@ChinaUnix, ehero.[iihero] 数据库技术的痴迷爱好者. 您可以通过iihero AT qq.com联系到我 以下是我的三本图书: Sybase ASE in Action, Oracle Spatial及OCI高级编程, Java2网络协议内幕

文章分类

全部博文(185)

文章存档

2014年(4)

2013年(181)

分类: Java

2013-07-19 13:19:16

以前,曾经利用各数据库底层C-API作wrapping,实现了若干异构数据库间数据导入导出的功能,但是代码复杂,不便开源。

 

下午,用java写了一个简单的数据抽取程序,实现MySQL数据库到Sybase ASE的数据移植。将它开源,放到: 上边了。本来取名做myetl,结果已经有人在sf.net上申请了,后来在其前加上一个j。以示java版本。

有兴趣的可以试用一下。

 

目前,可以是某用户的全库数据导入,也可以选择性的导入若干张表。

因为刚实现一个初步框子,所以定为0.9.0版。

 

打算以后有空再写些别的库间ETL,最后再重构,组合。

 

使用方法:

当前目录下边有一个xml配置文件etl_config.xml,其格式如下:


  1. "1.0" encoding="UTF-8"?>  
  2.   
  3.   
  4.     mysql  
  5.     localhost  
  6.     3306  
  7.     test  
  8.     password1  
  9.     test  
  10.     gbk  
  11.       
  12.       
  13.   
  14.   
  15.   
  16.     ase  
  17.     sean-laptop  
  18.     5000  
  19.     test  
  20.     password1  
  21.     demo  
  22.     eucgb  
  23.       
  24.   
  25.   


 

直接运行myEtl.bat即可实现导入。如果去掉

那一块的注释,则全库导入。

注意字符集选项,如果没有这个配置,很容易出现乱码。

 

 

目前的限制条件是:

不要使用数据库超级用户来配置连接,因为目前程序里边没有对系统表进行过滤。

 

后期计划:

Sybase ASE --> Sybase ASE

Sybase ASA --> Sybase ASE

Sybase ASE --> Sybase ASA

 

Oracle --> Sybase ASE

DB2 --> Sybase ASE

SQL Server --> Sybase ASE

 

逆向导入,以后有时间再做。

 

已有功能:

1. 能保持表结构几乎一致,类型兼容

2. 日志文件etl.log里会记录导入的详细过程以及中间可能出现的出错信息

3. 目标表,会建立与源表一样的主键结构

4. 目标表会创建与源表一致的identity信息

5. 通过字符集一致性配置,会保持源表中的字符集到目标表,不致乱码。

 

待改进功能:(下述功能,是细致一些的功能,适用目的不同,如果只是简单的抽取数据,则不需要)

1. 添加与源表一致的foreign key constraints (这个稍微有点复杂,会增加导入时间)

2. 添加与源表一致的index功能,即附加创建的索引也在目标表上体现出来

 

其实,以前用C++ wrapper实现的原理与java版本比较接近,相比JDBC而言,它能操纵更多底层的API,获取更丰富的信息,只是代码量可能比较大。

阅读(1419) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~