8.1数据管道简介使用POWERBUILDER的时候,我们经常会用到一个重要的功能数据管道(PIPELINE)。它向用户提供了在数据库内部、数据库之间、甚至于DBMS之间快速复制数据的途径。简单的说,使用数据管道就是把源数据库的一个或者多个表中的数据输入到目的数据库的一个表当中去。这个复制数据的过程称为通过数据管道灌入数据。8.2新建数据管道为了能是读者了解清楚数据管道的作用,需要读者自行建立一些简单的数据库和对象库,为了表述方便,这里只提示关键步骤,不明白的可以翻查第二章的详细讲解:一、建立一个对象库,PIPELINE.PBL,不需要由PowerBuilder为我们生成应用程序的模板。PIPELINE.PBL的SAVEAPPLICATION对话框中起名为LEARNING_PIPELINE。二、新建两个数据库:Source.db和DESTINATION.db。ID号是:DBA,密码是SQL。(选择默认即可)。在我的电脑——控制面板——管理工具——数据源可以查看到数据库的信息。三、在Source.db中添加三个字段,名字分别为fromsource,source1,source2。三个字段的数据类型均为char,最大宽度WIDTH设置为30,NULL项中选择YES。表格命名为source。四、在DESTINATION.db中添加三个字段,名字分别为fromsource,source1,source2,source2。四个字段的数据类型均为char,最大宽度WIDTH设置为30,NULL项中选择YES。表格命名为destination。编者注:对于数据库的表格内容输入可以使用DB语言。添加记录INSERTINTOsourceVALUES('111','sdf','eraw')更新记录UPDATEsourceSETsource1='test'wherefromsource='222';删除记录DELETEFROMsourcewherefromsource='111';删除全部记录DELETEFROMsource;五、打开source.db,选择DBAadministration,一次添加几个数据进去:INSERTINTOsourceVALUES('111','sdf','erawe');INSERTINTOsourceVALUES('222','ert','uyior');INSERTINTOsourceVALUES('333','fgh','78679');INSERTINTOsourceVALUES('444','bnm','fghjh');(注意切换英文输入法)点击execute导入,单击工具条上的DATAMANIPULATION(GRID)画板按钮进行阅览(图8-13)。六、打开destination.db,选择DBAadministration,一次添加几个数据进去:INSERTINTOdestinationVALUES('111','','','你好');INSERTINTOdestinationVALUES('222','','','吃饭');INSERTINTOdestinationVALUES('555','','','现在');INSERTINTOdestinationVALUES('666','','','世界');INSERTINTOdestinationVALUES('777','','','努力');(注意切换英文输入法)点击execute导入,单击工具条上的DATAMANIPULATION(GRID)画板按钮进行阅览(图8-14)。至此,准备工作全部完成。开始我们的数据管道的学习。在POWERBAR上面,有一个数据管道画板按钮(图8-1)。图8-1我们单击这个按钮。随之出现的就是数据管道选择对话框(图8-2)。图8-2对话框的列表框里面枚举了在选中的库文件中所有的已经定义的数据管道。我们希望新建一个数据管道,单击对话框中的NEW按钮,进入NEWDATAPIPELINE对话框(图8-3)。图8-3我们看到DATASOURCE组框中列出了四种数据源:QUICKSELECT、SQLSELECT、QUERY、STOREDPROCEDURE。在DATABASECONNECTION组框中,我们可以选择源数据库和目的数据库。在左边的列表框中选择源数据库SOURCE,在右边的列表框中选择目的数据库DESTINATION,然后单击对话框的OK按钮,QUICKSELECT对话框出现了,这是因为我们在前面的数据源选项中选择的是QUICKSELECT。如图8-4。图8-4我们选择SOURCE表中的FROMSOURCE列,单击OK按钮,这时我们看到的才是DATAPIPELINE画板的工作区(图8-5)。图8-5TABLE项表示我们希望选择的表的名称。KEY是该表的主键名称。OPTIONS是一个下拉列表框,指定了进行数据灌注时的一些选项,比方说在目的数据库中已经存在一个同名的表列的时候是新建表列还是替换以前的表列,是仅仅填加新的记录,还是需要更新老的记录。Creat表示新建一个表格,可重新命名表格名;replace表示删除原来名字一样的表格,以新建的表格替代;refresh,表示删除原来表格的全部项,用源项取代,需要选择已有的表格进行处理;append,表示把源项添加进目标项,保留源项所有的信息,即在原表格下面添加新表格,需要选择已有的表格进行处理;update,需选择关键词,表示用源数据替代原来的久数据,并通过关键字进行匹配,需要选择已有的表格进行处理。COMMIT项表示在向目的表中填加多少条记录以后进行提交。MAX值表示在出现多少次错误以后就停止灌入数据。EXTENDEDATTRIBUTE表示是否在灌注数据的时候,把表列的扩展属性比方说有效性检查规则、编辑格式等等一起灌入。接着就是刚才选定的需要灌注的表列的属性信息,我们可以根据需要来确定这些信息。如果单击SQL画板按钮,或者在DESIGN菜单中选择EDITDATASOURCE命令,我们还可以对源数据进行修改。比方说,我们单击表结构中的SOURCE2这一行表示希望对这一表列的数据也进行灌注。如图8-6。图8-6然后返回数据管道工作区,这时POWERBUILDER会弹出一个对话框提示数据管道的源数据已经更新,单击确定按钮表示确认。这时,我们可以发现源数据确实更新了。如图8-7。图8-7关闭工作区,系统提示我们是否保存新建的数据管道,选择“是”,给管道取名为PIPELINE1(注意,PIPELINE和1之间不能有空格,否则会报错),一个数据管道就建立完成了。如图8-8。图8-88.3修改数据管道有些时候我们希望对已经建立的数据管道——比方说刚刚建立的PIPELINE1——进行一些修改工作。怎么办呢?单击POWERBAR上的数据管道画板按钮,从列表框中选择PIPELINE1,然后单击OK按钮,就再次打开了这个数据管道。我们单击刚才介绍过的SQL画板按钮,在源数据中填加一个表列(图8-9)。图8-9然后退出源数据编辑状态,单击“确定”按钮确认更新,系统提示我们是否保存刚才的修改,选择“是”,关闭数据管道工作区。这样就完成了对数据管道PIPELINE1的修改。8.4运行数据管道运行一个管道进行数据灌入的方法非常的简单。首先打开数据管道——比方说刚才建立的PIPELINE1,单击工具条上的EXECUTE按钮或者在DESIGN菜单中选择EXECUTE命令,都可以达到目的。运行数据管道之后,状态条(窗口左下角)上将显示PIPELINETRANSFERCOMPLETED,数据灌入完成。效果:在destination数据库里面多了一个source表,相当于复制了过去。编者注:本例子只是使用了最简单的添加一个新的表格在数据库中,要是读者感兴趣,可以再尝试一下选择append或者update模式,会有不少收获哦~在实际的应用中,使用creat和update模式居多。Refresh的效果如图8-10。Append的效果如图8-11。Update,选fromsource为关键字的效果如图8-12。图8-10图8-11图8-12图8-13图8-14