龙之介 发表于 2013-1-25 22:23:32

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 SMALLINTNUMBER浮点型decimalDEC numericDECIMAL realDOUBLE PRECISIONdouble 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)二进制数据类型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)等等
 
 
 
页: [1]
查看完整版本: JudeForData,数据库数据导入工具