实现ORACLE与SQLSERVER数据库间的数据抽取与转换工具
以下是我从自己写的PDF说明书上COPY下来的,格式很乱,具体下载附件里的工程文件《抽取工具配置说明.pdf》有问题QQ联系:51003459 所有的包我都删除了,因为太大上传不了,要的QQ传。
zExtractor数据抽取工具配置说明
1.
对每一套的抽取项目编写一个独立的XML文件放在classes/conf/文件夹下。例如抽取A库到B库的所有气象数据配置在一个a.xml里,把抽取B库到C库的N张电网数据表配置在另一个b.xml里,当多个xml配置文件里有相同的数据源(比如以上的B库)该工具只生成一个B库的连接池。
2.
XML配置文件中的属性名对大小写敏感。
3.
<property name="type" value="ORACLE"></property>要显式定义 因为对于不同的数据库来说:select * from table 与select * from (table), select * from (Select * from table) 与select * from (Select * from table) as temp是不一样的,要通过type来判断。
4.
以下为最简配置:
easyDemo
<?xml version="1.0" encoding="UTF-8"?><extract-case casename="案例"><!-- 源数据库 --><source-database><property name="type" value="SQLSERVER"></property><property name="driverClassName" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property><property name="url" value="jdbc:microsoft:sqlserver://192.168.104.5:1433;databaseName=zy"></property><property name="username" value="sa"></property><property name="password" value="xx"></property><property name="minIdle" value="2"></property><property name="maxActive" value="50"></property><property name="maxWait" value="30000"></property></source-database><!-- 目标数据库 --><destination-database><property name="type" value="ORACLE"></property><property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property><property name="url" value="jdbc:oracle:thin:@10.142.1.197:1521:sa"></property><property name="username" value="gdprs"></property><property name="password" value="xxxxx"></property></destination-database><task fromtable="text1" fromschema="dbo" totable="text2" taskinfo="两个表字段一样的最简配置" toschema="gdprs" cronexpress="”0" issamefieldname="true"><extractkeylist><extractkey fromfield="id" tofield="id"></extractkey></extractkeylist></task></extract-case>
默认配置:
?
抽取器extractorClass ="com.epgis. extract.core. extractor. CommonExtractor" ;
?
优先级别priority = 10;
?
批量增加batchInsertSize = 50
?
一次性得到JDBC数据集RESULTSET的数量fetchSize = 10;
?
任务允许的最多X小时没有来数,如果超过X小时没来数则短信告知 maxNoneDataHours=null表示不用短信通知功能
5.
抽取工具通过配置的extractKey字段(可能是多个extractKey组成的复合主键)来唯一识别一条记录进行抽取,可以有两种配置:
1). <field-mapping><field name="id" sqltype="int" isextractkey="true"><tofield name="to_id" sqltype="varchar2" isextractkey="true"></tofield></field></field-mapping>
2). <extractkeylist><extractkey fromfield="id" tofield=" to_id "></extractkey></extractkeylist>
6.
源表与目标表的字段对应通过<field-mapping>来配置,在<field>的name写上源表的字段名,<tofield>写上目标表的字段名,最好显式写出sqlType。比如:
<task fromtable="t_auto_rtsq" fromschema="gdprs" totable="text5" toschema="gdprs" repeatinterval="20000" startdelay="0" issamefieldname="false"><field-mapping><field name="id" sqltype="int" isextractkey="true"><tofield name="to_id" sqltype="varchar2" isextractkey="true"></tofield></field><field name="TIME" sqltype="varchar2"><tofield name="date" sqltype="varchar2"></tofield></field><field name="senid"><tofield name="sen_id"></tofield></field><field name="ifch"><tofield name="ifch"></tofield></field></field-mapping></task>
注:一般情况下可不配置field里的javaType、sqlType、 precision、scale当此字段为特殊字段时才要显式配上比如:sqlType=”blob”。
7.
如果源与目标表字段一样,可不配<field-mapping>,只要在<task>里配isSameFieldName="true"并配上extractKey:
<task fromtable="t_auto_rtsq" totable="text5" repeatinterval="20000" startdelay="0" issamefieldname="true"><extractkeylist><extractkey fromfield="real_time" tofield="real_time"></extractkey>
...........
</extractkeylist></task>
说明:(1) 如果isSameFieldName="true",再显式的配上以下字段映射xml时,则该字段(max_wind_speed)以以下XML显式配置的为准
<field-mapping><field nam