ETL开发和配置说明V100b.docx

上传人:b****5 文档编号:5220986 上传时间:2022-12-14 格式:DOCX 页数:17 大小:21.62KB
下载 相关 举报
ETL开发和配置说明V100b.docx_第1页
第1页 / 共17页
ETL开发和配置说明V100b.docx_第2页
第2页 / 共17页
ETL开发和配置说明V100b.docx_第3页
第3页 / 共17页
ETL开发和配置说明V100b.docx_第4页
第4页 / 共17页
ETL开发和配置说明V100b.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

ETL开发和配置说明V100b.docx

《ETL开发和配置说明V100b.docx》由会员分享,可在线阅读,更多相关《ETL开发和配置说明V100b.docx(17页珍藏版)》请在冰豆网上搜索。

ETL开发和配置说明V100b.docx

ETL开发和配置说明V100b

ETL开发和配置说明

V1.0.0

(Updated1)

1说明

ETL的运行在公司的ETLSevice服务中,集成了实时接口、日志管理、线程调度和数据库连接池这四个产品,需要与公司的系统管理AdminWeb配合使用;

ETL支持两种数据模式:

1.采用任务的方式,定时处理数据

2.实时处理数据

2AdminWeb的ETL相关简单介绍

在AdminWeb中的同步配置管理菜单中

2.1同步配置线程

2.2日志管理

 

3数据库连接池介绍

ETL原则上支持多种数据库的连接,采用数据库参数配置的方式实现,配置文档放在\WEB-INF\pool\的目录下一个配置文件,该配置的文件名在Web.xml的约定:

ClassLoadStartup

com.pcm.web.pubs.servlet.ClassLoadStartup

pool

/WEB-INF/pool/pool.xml

trans

/WEB-INF/trans/trans.xml

2

注:

1.pool的配置文件只能有一个:

/WEB-INF/pool/pool.xml,就是数据库连接池的配制文档;

2.trans的配置文件可以多个,文件之间用”;”分开,例如:

/WEB-INF/trans/trans1.xml;/WEB-INF/trans/trans2.xml

3.1数据库连接池的配置介绍

配置文件中,包含两个部分:

3.1.1数据库驱动的参数

….

name:

驱动名称,不能重复

class:

驱动类

3.1.2连接池参数

maxpool="10"

maxconn="20"

expiry="18000"

url="jdbc:

oracle:

thin:

@172.21.179.143:

1521:

spmdb"

user="system"

password="spmdb"

driver="oracle"/>

….

name:

连接池的名称,是开发BaseDAO.getConnection(StringpoolName)调用中参数poolName,不能重复

maxpool:

连接池的数据同时获得连接的最大数量

expiry:

每个连接的空置运行时间,超出这个时间,连接池将回收

url:

数据库的URL

user:

访问数据的用户

password:

访问密码

driver:

数据库的驱动定义,就是Driver的名称

3.2数据库连接池的配置实例

xmlversion="1.0"encoding="GB2312"standalone="yes"?

>

--系统需要接口调用的类-->

--drivername="db2"class="Com.ibm.db2.jcc.DB2Driver"/-->

--

ORACLE的数据库联接

maxpool="10"

maxconn="20"

expiry="18000"

url="jdbc:

oracle:

thin:

@172.21.179.143:

1521:

spmdb"

user="system"

password="spmdb"

driver="oracle"/>

-->

maxpool="10"

maxconn="20"

expiry="18000"

url="jdbc:

oracle:

thin:

@localhost:

1521:

spmdb"

user="system"

password="spmdb"

driver="oracle"/>

--

DB2的连接有四种,其中两种:

1.DB2Type2的连接(本地连接db2java.zip)

Driver:

COM.ibm.db2.jdbc.app.DB2Driver

URL:

jdbc:

db2:

SAMPLE

2.DB2Type4的连接(远程连接db2jcc.jar)

Driver:

com.ibm.db2.jcc.DB2Driver

URL:

jdbc:

db2:

//localhost:

50000/SAMPLE

maxpool="10"

maxconn="20"

expiry="18000"

url="jdbc:

db2:

//localhost:

50000/SAMPLE"

user="system"

password="spmdb"/>

-->

--poolname="red_db"

maxpool="10"

maxconn="20"

expiry="18000"

url="jdbc:

db2:

//192.168.1.100:

50000/RED_DB"

user="db2admin"

password="redbull"-->

maxpool="10"

maxconn="20"

expiry="18000"

init="1"

url="jdbc:

db2:

RED_DB"

user="db2admin"

password="db2admin"/>

maxpool="10"

maxconn="20"

expiry="18000"

init="1"

url="jdbc:

db2:

RED_DB"

user="db2admin"

password="db2admin"/>

4ETLService同步数据映射配置

配置文件在ETLService.ear中的ETLWeb

4.1同步数据映射说明

同步映射配置,可以一个业务对象对多个数据表,如下:

4.2数据映射的配置实例

xmlversion="1.0"encoding="GB2312"standalone="yes"?

>

--系统实时同步的数据映射定义

table:

name:

表名

seq:

序列字段名称,例如:

EMPLOYEE_ID

seqtable:

序列的名称,例如:

ECC_FND.ECC_FND_EMPLOYEES_S

poolname:

表所在的数据库连接池

field

name:

数据字段的名称

transname:

迁移数据的名称

-->

5数据实时同步开发介绍

采用EJB的调用方式,EJB的名称XREtl,在调用的程序中引用XREtl.jar:

5.1远程接口获得

try

{

//TransfromIntime的接口

TransfromIntimetransfromIntime=(TransfromIntime)EJBHomeFactory.getFactory(com.pcm.etl.ReferenceConst.EJB_NAME).lookupHome(TransfromIntimes.class);

}

catch(EjbHomeFactoryExceptione)

{

Debug.printErr(e);

thrownewEJBException(e);

}

5.2远程接口方法

voidinsertData(Stringxml,intregisterId);

xml的格式参见下节

registered:

注册企业,从User对象中获得;

5.3远程接口方法参数说明

5.3.1插入数据的XML

XML的格式如下:

xmlversion="1.0"encoding="GB2312"standalone="yes"?

>

--系统实时同步的数据映射定义

trans:

属性:

name:

系统实时同步的名称,与ETLWeb中实时配置的trans的名称一致

数据的内容:

name:

系统实时同步数据名称,与ETLWeb中实时配置的trans的相同名称中的table中field的transname的值相同,否者就不会保存

-->

一个插入一条业务数据

5.3.2插入数据的XML的实现方式

可以通过工具类:

Model2XMLUtils实现

Model2XMLUtilsutil=Model2XMLUtils.getInstance();

EccFndEmployeesmodel=….//获得员工的数据

StringdataConfig=”employee”;//员工的映射名称,在ETLWeb的trans中配置

try

{

StringemployeeXML=Util.getTransMappingXML(model,dataConfig);

}

catch(UtilException)

{

}

6数据线程同步开发介绍

在工程中必须引用:

XRUtil.jar

6.1开发说明

类必须从BaseSchedulerThread派生实现doInitial和doWake两个方法,doInitial是线程启动时做初始化准备,若是没有准备,可以不用填写实现内容,doWake线程的工作内容,是同步过程的实现方法。

数据库的操作开发

1.获得Connection

Connectioncon=BaseDAO.getConnectionByPools(StringpoolName);

2.释放Connection

6.2开发实例

从两个数据不同数据库查询,并将操作日志写入到同步的日志文件中,这个类的路径在AdminWeb中配置使用。

BaseDAO.freeConnectionByPools(Connectioncon,StringpoolName)

packagecom.pcm.web.etl.test;

importjava.sql.Connection;

importjava.sql.SQLException;

importjava.sql.Timestamp;

importjava.util.Iterator;

importcom.pcm.db.ColumnData;

importcom.pcm.db.QueryUtil;

importcom.pcm.ejb.EJBHomeFactory;

importcom.pcm.ejb.EjbHomeFactoryException;

importcom.pcm.exception.UtilException;

importcom.pcm.fnd.ReferenceConst;

importcom.pcm.fnd.constants.ETLConstants;

importcom.pcm.fnd.model.ETLSchedulerLogModel;

importcom.pcm.fnd.universe.ETLSchedulerLogLet;

importcom.pcm.tracer.Debug;

importcom.pcm.util.Constants;

importcom.pcm.util.data.QueryPageData;

importcom.pcm.util.data.QueryResultData;

publicclassTestextendscom.pcm.util.BaseSchedulerThread

{

ETLSchedulerLogLetetlSchedulerLogLet=null;

@Override

protectedvoiddoInitial()

{

try

{

etlSchedulerLogLet=(ETLSchedulerLogLet)EJBHomeFactory.getFactory(ReferenceConst.EJB_NAME).lookupHome(ETLSchedulerLogLet.class);

}

catch(EjbHomeFactoryExceptione)

{

Debug.printErr(e);

}

}

protectedvoiddoWakeUp()

{

if(etlSchedulerLogLet==null)

return;

//

ConnectioneipCon=null;

ConnectionwmsCon=null;

Stringtime=newTimestamp(System.currentTimeMillis()).toString();

ETLSchedulerLogModelmodel=newETLSchedulerLogModel();

model.setLogType(this.getClass().getName());

model.setLogTime(time);

model.setCreationDate(time);

model.setRegisterId(super.registerId);

model.setEnableFlag(Constants.ENABLE_FLAG_TRUE);

try

{

eipCon=com.pcm.pubs.db.connection.BaseDbDAO.getConnectionByPools("eip_db");

wmsCon=com.pcm.pubs.db.connection.BaseDbDAO.getConnectionByPools("wms_db");

QueryUtilqueryUtil=QueryUtil.getInstance();

QueryResultDataeipRes=queryUtil.query("select*fromecc_fnd.ecc_fnd_enterprise",newQueryPageData(),eipCon);

Debug.printErr("================eipCon==============");

listPage(eipRes);

QueryResultDatawmsRes=queryUtil.query("select*fromecc_fnd.ecc_fnd_employeeswhereregister_id=400",newQueryPageData(),wmsCon);

Debug.printErr("================wmsCon==============");

Debug.printErr("select*fromecc_fnd.ecc_fnd_employeeswhereregister_id=400");

listPage(wmsRes);

//

model.setLog("getdataformeip_db,andinsertintowms_db,isOK");

model.setLogLevel(ETLConstants.ETL_SUCCESS);

etlSchedulerLogLet.insert(model);

}

catch(SQLExceptione)

{

Debug.printErr(e);

model.setLog(e.getMessage());

model.setLogLevel(ETLConstants.ETL_ERROR);

etlSchedulerLogLet.insert(model);

}

catch(UtilExceptione)

{

Debug.printErr(e);

model.setLog(e.getMessage());

model.setLogLevel(ETLConstants.ETL_ERROR);

etlSchedulerLogLet.insert(model);

}

finally

{

try

{

com.pcm.pubs.db.connection.BaseDbDAO.freeConnectionByPools(eipCon,"eip_db");

}

catch(SQLExceptione)

{

Debug.printErr(e);

model.setLog(e.getMessage());

model.setLogLevel(ETLConstants.ETL_WARN);

etlSchedulerLogLet.insert(model);

}

try

{

com.pcm.pubs.db.connection.BaseDbDAO.freeConnectionByPools(wmsCon,"wms_db");

}

catch(SQLExceptione)

{

Debug.printErr(e);

model.setLog(e.getMessage());

model.setLogLevel(ETLConstants.ETL_WARN);

etlSchedulerLogLet.insert(model);

}

}

}

privatevoidlistPage(QueryResultDatares)

{

//

if(res.getColumnNames()!

=null)

{

intnColumn=res.getColumnNames().length;

Stringhead="";

for(intiColumn=0;iColumn

{

head+=res.getColumnNames()[iColumn]+"/"+res.getColumnLabels()[iColumn]+"/"+res.getColumnTypes()[iColumn]+"";

}

Debug.println(head);

//

inti=1;

for(Iteratorit=res.getResultList().iterator();it.hasNext();)

{

Stringline="";

ColumnDatadata=it.next();

Object[]colmuns=data.getDatas();

//

for(intiColumn=0;iColumn

{

if(colmuns[iColumn]==null)

line+="null";

else

line+=colmuns[iColumn].toString()+"";

}

Debug.println(line);

}

}

}

}

6.3部署方式

把程序输出jar文件,放在ETL的运行环境的lib下;

以系统管理员进入AdminWeb,配置运行线程,参见《AdminWeb的ETL相关简介》

重新运新ETL工程就可以了;

7附件

7.1数据工具类QueryUtil的介绍

该工具类是通用查询工具类,输入查询SQL,返回查询结果保存在QueryResultData对象中,参见实例

调用方法

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1