数据管道可以在不同的数据库表之间移动数据。这种数据移动可以在同一个数据库或不同数据库甚至不同DBMS中进行。
使用方法有两种:
1.作为实用工具给开发者,在数据管道画板中交互式地在不同的表之间移动数据。
2.在应用程序中实现数据移动,用来开发一个需在不同表之间移动数据的应用程序。
在2的使用方法中,有5个步骤:创建所需对象,执行初始化操作,启动数据管道,处理行错误,执行结束操作。
创建对象
需要建立管道对象,支撑用户对象,窗口三个对象。
1.创建管道对象
定义应用程序需执行的数据定义及数据访问。
点击File中的New,打开Database选项卡,选择Data Pipeline,选择数据源(上半部分)和数据库连接(下班部分),进入Quick Select选项框。选择 表和列,并建立规则,点击OK即可完成简单的数据管道。
2.创建支撑用户对象
创建一个继承PowerBuilder管道系统对象的用户对象。
管道对象属性、事件以及函数:
属性 DataObject、RowsRead、RowsWritten、RowsInError、Syntax
事件 PipeStart、PipeMeter、PipeEnd
函数 Start、Repair、Cancel
在New对话框的Object选项卡中选择Standdard Class选项,到Select Standard Class Type对话框。选取一个内置系统对象,用户对象将继承这个系统对象。
选择pipeline并点击OK,出现用户对象画板工作区。
根据需要对用户对象进行修改,并进行保存。
3.创建窗口
提供一个用户界面,可以与管道对象进行交互,对管道操作进行监控。
1.启动管道操作2.发生错误时,显示并修复错误3.在必要时终止管道操作。
还可以在窗口中增添其他控件,如命令按钮或静态文本或其他数据窗口控件等等。
初始化操作
为应用程序处理管道运行做准备。
具体步骤如下:
1.连接源数据库及目标数据库
准备两个事务对象,一个连接源数据库,一个连接目标数据库。
写法示范:
itrans_soure = CREATE transaction 创建一个新的事务对象实例
CONNECT USING itrans_source; 建立连接
2.创建一个支撑用户对象实例
必须先为这个用户对象声明一个变量,如叫u_sales_pipe_logistics:
u sales pipe_logistics iuo_pipe_logistics
再在用户事件中创建一个实例,将它保存在变量中。
3.定义所使用的管道对象
管道操作
1.启动管道
Start函数
2.管道处理监控
除了测试Staart函数的返回值,还可以用显示管道操作统计数据的方法。步骤如下:
用户对象画板中打开支撑用户对象,出现用户对象画板工作区。声明几个类型为静态文本的实例变量。编写支撑用户对象的PipeMeter事件脚本并保存,然后关闭用户对象画板。在窗口画板中打开处理管道操作的窗口,让用户在出现的窗口画板工作区中编辑所打开的窗口。在窗口中加入几个静态文本控件,编辑窗口的Open事件,要注意对应,完成之后保存然后关闭。
3.中止管道运行
防止用户误启动或者执行时间比预期长要取消时使用。
用Cancel函数,执行后需要对返回值进行测试。
ps:中止时,前面传输的部分是否提交到目标表取决于建立管道对象时定义的Commit属性。
4.向数据库提交更新操作
根据该管道对象定义的Commit属性提交,不需要开发者加COMMIT语句。
Commit属性值为ALL时,撤销传输的所有行;为一个指定行数n时,传输n行就执行一次COMMIT语句,会提交语句传输的所有行。
处理行错误
修复错误行两种方法:
1.在数据窗口控件直接编辑错误行。
2.执行应用程序代码进行错误行代替。
错误修复后,用Repair函数把修复行提交给目标表(调用+测试)。
若还是有错误,可能时以下3种情况:
1.已被修改但仍有错的行
2.未被修改
3.Cancel函数还未写入或Cancel操作使源表中恢复的行。
放弃错误行:
1.使用Reset函数放弃所有错误行。
2.使用RowaDiscard函数放弃某一行或多行指定行。
结束操作
释放管道操作开始时获得的资源。
1.清除创建的支撑用户对象实例
2.关闭源数据库和目标数据库的连接
3.清除源事务对象实例和目标事务对象实例

1503

被折叠的 条评论
为什么被折叠?



