资源描述:
《利用powerbuilder的数据管道技术转储数据》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、利用PB的数据管道技术实现数据转储摘要PowerBuilder提供了强大的数据库操作功能,包括:数据窗口技术、SQL语句的嵌入式直接应用、数据管道(DataPipeline)技术等。本文将就利用PowerBuilder的数据管道技术实现数据库之间的数据自动转储进行阐述。主题词数据库数据管道数据转储在油田开发生产信息管理中,数据库技术应用日益广泛,每天大量的生产数据在队、作业区、厂之间的各种不同的数据库系统中流动,因而数据转储是一项重要的信息管理功能。通过数据转储在不同的数据库之间进行数据转储,以保证数据在生产中正常使用。Powerbuilder(以下简称pb)提供强大的数据管道
2、技术(DataPipeline)。通过数据管道,可以在不同的数据库表之间转储数据,实现一个或多个表中的数据转储到另一个数据库表中,这种数据转储可以在一个数据库管理系统的不同用户中进行,也可以在相同管理系统的两个数据库之间转储数据,甚至可以在不同的数据库管理系统(DBMS)之间进行,它的最大特点是使用方便、可靠性高,数据转储速度快。1数据转储的实现通过应用程序实现数据的自动转储,要求被操作的源数据库和目标数据库已存在,并且确定相应的数据库接口连接源数据库和目标数据库,建立相应的数据管道(即相应的转储策略),通过应用程序使用数据管道实现数据的转储。本文以油井井史(DBA04)从数据
3、中心(ORACLE9i数据库)根据所定义的区块单元参数向VFoxPro5.0数据库转储阐述利用数据管道转储数据的主要实现技术。1.1数据库接口程序的确定在PB中对ODBC数据库接口或专用数据库接口进行配置,使PB能通过具体的接口与数据库相连。在本文的数据转储实现中,通过ODBC数据库接口连接VFoxPro5.0数据库,通过PB提供的ORACLE数据库专用接口连接ORACLE9i数据库。1.2数据管道的实现步骤在应用程序中使用数据管道有以下六个基本步骤:(1)创建应用程序所需对象;(2)数据库连接;(3)执行数据管道初始化操作;9(4)启动数据管道;(5)处理程序运行中移动数据的
4、错误行;(6)执行数据移动完毕后的收尾操作。1.2.1创建应用程序对象为了在应用程序中实现数据管道,需建立以下几个不同的对象:数据管道对象、支撑用户对象、窗口对象、数据窗口控件对象等。1)数据管道对象的建立数据管道对象利用Powerbuilder提供的pipeline画板中创建并定义它的特征(图1)。图1数据管道对象建立在此着重说明以下的参数的设置和定义:(1)Commit参数:定义管道操作中数据传输多少行进行提交。由于管道操作中的数据传输实际是在数据库系统的回滚段中进行,而回滚段的大小有一定的限制,所以用户应根据实际转储的数据量大小选择适当的Commit行数,防止回滚段溢出。
5、在本文示例中由于需要转储的数据量巨大,所以在数据管道dba04_pip中定义每1000行提交一次,以防止回滚段溢出。(2)DataSource的SQL定义:定义源数据库表中被转储的列、选择条件以及列的转换规则等(图2)。在DataSource的SQL中,提供了十分灵活的SQL定义,可以定义多表根据某一项主键信息关联的方法从多个源数据表中形成目标数据表,也可以根据一定的计算从源数据库表派生成新的数据作为目标表的源。数据管道转储数据的灵活和强大实际就是通过DataSource的SQL定义来体现的,也就是通过充分使用源数据库系统的各种操作和函数、表达式来实现灵活的数据转储。在本文示例
6、中,目标数据库表(油井井史.dbf)9从数据中心的两个数据库表油井井史(DBA04)和单井基础信息(DAA01)关联得到,按照所定义的数据管道检索参数(QKDY)在单井基础信息表(DAA01)检索出给定检索参数(QKDY)的井号并关联油井井史(DBA04),通过相应的处理形成SQL定义,其中用到ORACLE数据库空值处理函数NVL进行空值处理,以避免DBF数据库出现.NULL.空值表达而影响数据的使用。语法如下:SELECTDAA01.JH,DBA04.NY,nvl(DBA04.CYFS,''),nvl(DBA04.SCTS,0),nvl(DBA04.TY,0),nvl(DBA
7、04.YY,0),nvl(DBA04.RCYL,0)+nvl(DBA04.RCSL,0),nvl(DBA04.RCYL,0),nvl(DBA04.RCSL,0),nvl(DBA04.HS,0),nvl(DBA04.YCYL,0),nvl(DBA04.YCSL,0),nvl(DBA04.BZDM1,''),nvl(DBA04.LY,0),nvl(DBA04.JY,0),nvl(DBA04.NCYL,0),nvl(DBA04.NCSL,0),nvl(DBA04.LJCYL,0),nvl(DBA0