JudeForData,数据库数据导入工具

PowerBuilder的数据管道、MS Sqlser的数据导入工具借助ODBC可以支持所有的数据库,可以设置导入导出的表和列的对应关系,可以导出部分数据,但对于不同数据库的日期、BLOB、CLOB类型就无能为力了,而且也不能导入多个表,并且按着表的外键顺序先后导入数据。JudeForData就解决这样的问题,但目前版本没有图形化界面可以设置导入导入表的对应关系。

版本0.6.1.1(2009.08.14)
1.支持Oracle、MS Sqlserver、DB2、MySql、PostGreSQL数据库。

   支持日期/时间/时间戳类型的自动转换

   支持BLOB/CLOB导入

   可输出SQL 

   可输出建库脚本

   可输出文本格式的数据文件

   可输出EXCEL式的数据文件

   可选择源数据库和目的数据库的字符集

   支持表名不同、列名不同的数据导入

   优化大数据量的数据导入,使用索引查询

 

   已知缺陷:
   源表一次只能导入到一个目的表


2.支持数据类型

 

 

 postgresqloracle
整型smallintBINARY_INTEGER
 integerPLS_INTEGER
 bigint 
 serialINTEGER 
bigserialINT 
SMALLINT
NUMBER
浮点型decimalDEC 
numericDECIMAL 
realDOUBLE PRECISION
double precisionFLOAT 
NUMERIC 
REAL 
字符类型character varying(n), varchar(n)CHAR,CHARACTER 
 character(n), char(n)LONG , LONG RAW
  VARCHAR2
  RAW
  NCHAR,NVARCHAR2
 textCLOB
二进制数据类型byteaBLOB
   
   
   
日期/时间类型timestamp [ (p) ] [ without time zone ]DATE
 timestamp [ (p) ] with time zone 
 date 
 time [ (p) ] [ without time zone ] 
 time [ (p) ] with time zone 

 

 

 sqlservermysqldb2
整型bigintSERIALSMALLINT
 intTINYINTINTEGER/ INT
 smallintSMALLINTBIGINT
 tinyintMEDIUMINT 
 bitINT 
  INTEGER 
  BIGINT 
浮点型decimalFLOATDECIMAL(p,s)
 numericDOUBLEDEC(p,s) 
 realDOUBLE PRECISIONNUMERIC(p,s) 
  DECIMAL,DECNUM(p,s)
   REAL
   DOUBLE
    
    
字符类型charCHARCHAR(n)
 varcharVARCHARVARCHAR(n)
   CHARACTER VARYING(n)
 nchar.nvarchar CHAR VARYING(n)
   LONG VARCHAR
 text,ntextTEXT,LONGTEXT,TINYTEXTCLOB(n[K|M|G])
二进制数据类型imageTINYBLOBBLOB
 binaryBLOB 
 varbinaryMEDIUMBLOB 
  LONGBLOB 
日期/时间类型timestampDATEDATE
  DATETIMETIME
  TIMESTAMPTIMESTAMP

 

 

3.需要JDK/JRE1.5以上版本

 

 

4.运行文件run_exe.bat说明

4.1.set PATH=%PATH%

如果没有配置Java到系统环境变量,则修改上面的部分set PATH=%PATH%;D:\Java\jdk1.6.0_11\bin

4.2.lib目录包括jdbc等jar,为当前运行目录的子目录lib,如果拷贝到了其它位置,则修改set PROJECT_LIB=.\lib\

4.3可以更改默认配置文件config.xml

输出目录,在run.bat中修改 JudeForData.exe %LIB_PATH% -Dconfig_file=config_my_post.xml

 

config.xml文件配置说明: 

1.source为源数据库、destination为目的数据库,源、目的数据库只能各有一个

源数据库例子:

<source>
	<type>postgresql</type>
	<driver>org.postgresql.Driver</driver>
	<url>jdbc:postgresql://127.0.0.1:5432/testdb</url>
	<username>postgres</username>
	<password>manager</password>
	<schema>public</schema>
	<charset></charset>
</source>

 

目的数据库例子:

<destination>
	<type>oracle</type>
	<driver>oracle.jdbc.driver.OracleDriver</driver>
	<url>jdbc:oracle:thin:@127.0.0.1:1521:orcl</url>
	<username>MYDBUSER</username>
	<password>oracle</password>
	<schema>MYDBUSER</schema>
</destination>

 

如果导出数据库的建表文件等,源数据库的type及连接等可以写一样

如果只导出文件而不导入数据到目的数据库,目的数据连接除type其它项可以任意

 

2.type要求填写sqlserver、mysql、oracle、db2、postgresql

   driver填写jdbc driver

   url、username、password填写连接数据库参数

   schema在oracle、sqlserver中理解为用户名、mysql中为database、postgresql为模式

   charset填写数据库字符集,例如:utf-8、iso-8859-1、gb2312等,可以不填写(空白),也可以不选择这项.不填写或者不选择都不处理.

 

3.commit_rows为导入过程中每张表每次提交的记录数,对于CLOB、BLOB每一次只导入一条记录一个CLOB、BLOB列

 

4.导入表

4.1导入schema下的所有表,目的数据库没有的表不导入

 

 <tables></tables>

 

4.2导入部分表,不用考虑表之间的外键关系而按顺序列出,导入过程自动处理

 <tables>
  <table>TEST1</table>
  <table>TEST2</table>
</tables>

 

4.3导入表的部分数据,where查询条件,不包括where关键字

<table where="COL1=1">TEST1</table>

 

4.4目的表和源表不同名,列名相同

 

<table destination="TABLE2">
	TABLE1
</table>

 

4.5目的表和源表不同名,列名也不相同

<table destination="TABLE2">TABLE1
	<column destination="">COLUMN1</column><!-- 列名相同 -->
	<column destination="COLUMN33">COLUMN2</column>
	<column destination="COLUMN33">COLUMN3</column>			
</table>

 

4.6可以在表上设置字符集,只对表有效,适用于mysql表的字符集不同于数据库的字符集的情况. 

<table charset="gb2312">TEST1</table>

  

 

 

5.导入过程

 

 

编码说明
1读取源数据
2导入数据
4导入CLOB数据
8导入BLOB数据
16生成导入脚本
32生成建库脚本

64      TAB分割的文本文件

128    EXCEL文件

 

其中16sql脚本、64txt文件、128excel文件每一个表一个文件,分别输出到当前目录下的sql、txt、excel目录

      32建库脚本,2个文件,create.sql和drop.sql,输出到当前目录下的db目录

      可以更改输出目录,在run.bat中修改 JudeForData.exe %LIB_PATH% -Doutput_dir=D:\data

     输出excel文件采用了apache的poi, 为了控制内存溢出的问题,每个excel文件最多输出1万条记录,一个表输出到若干个文件中

     程序在不输出excel文件的情况下,消耗内存控制在6M,并且长时间运行也没有问题

     输出excel文件时,内存消耗60M左右.

 

  <process>1</process>

 

process的值为上面编码N项的和(N>=1),其中编码1为必选项

process可能的值有1、3(1+2)、7(1+2+4)、15(1+2+4+8)、5(1+4)、9(1+8)、11(1+2+8)、13(1+4+8)等等

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值