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.支持数据类型

 

 

  postgresql oracle
整型 smallint BINARY_INTEGER
  integer PLS_INTEGER
  bigint  
  serial INTEGER 
bigserial INT 
SMALLINT
NUMBER
浮点型 decimal DEC 
numeric DECIMAL 
real DOUBLE PRECISION
double precision FLOAT 
NUMERIC 
REAL 
字符类型 character varying(n), varchar(n) CHAR,CHARACTER 
  character(n), char(n) LONG , LONG RAW
    VARCHAR2
    RAW
    NCHAR,NVARCHAR2
  text CLOB
二进制数据类型 bytea BLOB
     
     
     
日期/时间类型 timestamp [ (p) ] [ without time zone ] DATE
  timestamp [ (p) ] with time zone  
  date  
  time [ (p) ] [ without time zone ]  
  time [ (p) ] with time zone  

 

 

  sqlserver mysql db2
整型 bigint SERIAL SMALLINT
  int TINYINT INTEGER/ INT
  smallint SMALLINT BIGINT
  tinyint MEDIUMINT  
  bit INT  
    INTEGER  
    BIGINT  
浮点型 decimal FLOAT DECIMAL(p,s)
  numeric DOUBLE DEC(p,s) 
  real DOUBLE PRECISION NUMERIC(p,s) 
    DECIMAL,DEC NUM(p,s)
      REAL
      DOUBLE
       
       
字符类型 char CHAR CHAR(n)
  varchar VARCHAR VARCHAR(n)
      CHARACTER VARYING(n)
  nchar.nvarchar   CHAR VARYING(n)
      LONG VARCHAR
  text,ntext TEXT,LONGTEXT,TINYTEXT CLOB(n[K|M|G])
二进制数据类型 image TINYBLOB BLOB
  binary BLOB  
  varbinary MEDIUMBLOB  
    LONGBLOB  
日期/时间类型 timestamp DATE DATE
    DATETIME TIME
    TIMESTAMP TIMESTAMP

 

 

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)等等

 

 

 

你可能感兴趣的:(oracle,mysql,db2,Excel,PostgreSQL)