日期:2014-05-16  浏览次数:20441 次

实现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