数据管道

上传人:桔**** 文档编号:494761794 上传时间:2023-07-25 格式:DOC 页数:11 大小:1.42MB
返回 下载 相关 举报
数据管道_第1页
第1页 / 共11页
数据管道_第2页
第2页 / 共11页
数据管道_第3页
第3页 / 共11页
数据管道_第4页
第4页 / 共11页
数据管道_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《数据管道》由会员分享,可在线阅读,更多相关《数据管道(11页珍藏版)》请在金锄头文库上搜索。

1、 第11章 数据管道第11章 数据管道数据管道提供了在同一数据库内或不同的数据库之间,甚至是不同的数据库管理系统之间快速复制数据的途径。简单地说,数据管道就是把数据从一个数据库导入另外一个数据库中。11.1 数据管道概述11.1.1 数据管道功能通过数据管道,可以完成如下类型的操作:l 把一个或多个表中的数据复制到相同的DBMS或不同DBMS的一个表中。l 把整个表一次性地复制到另一个数据库中。当然,需要时也可以把数据库的扩展属性和系统表一同复制。l 建立一个与现有某个表的结构完全相同,但不包含数据的空表。l 把数据库服务器上的数据复制到本地Adaptive Server Anywhere数据

2、库中,这样,操作人员就可以使用本地的数据库而需使用网络,减轻网络传输压力。l 把日常变化的本地数据复制到服务器的共用数据。l 提供了在修改表结构的同时保留表中数据的另一种手段。l 用数据管道复制数据时,既可以复制表中所有数据,也可以复制部分数据,甚至还可以复制加工过的数据。11.1.2 数据管道的使用数据管道有两种使用方式:一是在数据管道画板中建立数据管道后直接运行。这种方式可以方便开发人员开发和测试应用程序。二是在应用程序中通过编写脚本来使用数据管道。这种方式允许开发人员根据需要来使用数据管道,因而更加灵活。11.1.3 数据管道属性数据管道对象有5个属性,反映了当前使用的数据管道对象、语法

3、、数据管道运行情况等信息。l RowsInError:管道中发现错误的行数,返回类型为Long。l RowsRead:管道已读取的行数,返回类型为Long。l RowsWritten:写入数据库的行数,返回类型为Long。l DataObject:管道对象名,返回类型为String。l Syntax:建立管道对象的语法字符串,返回类型为String。11.1.4 数据管道事件数据管道有5个事件:Constructor,Destructor,PipeStart,PipeMeter和PipeEnd,在创建数据管道用户对象时,也可以根据应用程序的需要定义自己的用户事件。l Constructor事件

4、:在数据管道对象创建时触发。l Destructor事件:在数据管道对象删除时触发。l PipeStart事件:开始执行Start或Repair函数时触发。l PipeMeter事件:每次读或写一块数据时触发,设计数据管道对象时定义的Commit参数值决定了块的大小。也就是说,数据管道每执行一个数据库事务时都会触发PipeMeter事件。l PipeEnd事件:Start或Repair函数执行结束时触发。11.1.5 数据管道函数数据管道有9个函数,其中ClassName,GetParent,GetContextService、PostEvent,TriggerEvent和TypeOf函数与其

5、他对象的相应函数的含义相同,在此不再重复。下面介绍数据管道对象特有的3个函数:Start()、Repair()、Cancel()。1 Start函数执行数据管道对象,将数据从源表按SQL SELECT语句指定的要求复制到目标表中。语法格式为:数据管道.Start(连接源数据库的事务对象名,连接目标数据库的事务对象名,数据窗口控件名,检索参数1,检索参数2)Start()函数的第三个参数数据窗口控件名,该控件用于显示数据管道运行过程中出现的错误。程序中无需把某个数据窗口对象关联到该控件上,系统会根据出现的数据管道错误自动生成所需的数据窗口对象。如果程序已经在该控件上关联了某个数据窗口对象,运行时

6、该对象将被数据管道创建的对象取代。Start()函数返回一个Integer值指示数据管道的运行是否成功,返回值的意义为:l 1 函数执行成功。l 1 打不开数据管道(如数据管道对象不存在)。l 2 列数太多。l 3 要创建的表已经存在。l 4 要增加数据的表不存在。l 5 未建立与数据库的连接。l 6 参数错误。l 7 列不匹配。l 8 访问源数据库的SQL语句致命错误。l 9 访问目标数据库的SQL语句致命错误。l 10 已经达到指定的最大错误数。l 12 不正确的表语法。l 13 需要关键字、但未指定关键字。l 15 数据管道已经在运行。l 16 源数据库出错。l 17 目标数据库出错。l

7、 18 目标数据库处于只读状态,不能写入数据。2 Cancel函数在数据管道运行过程中,执行Cancel()函数后将终止数据管道的执行。Cancel()函数的语法为:数据管道对象.Cancel()该函数执行成功时返回1,失败时返回0。3 Repair函数数据管道运行后,如果某些行不能传送到目标数据库,就会产生错误,出错的行显示在与数据管道对象相关联的数据窗口中。用户在数据窗口中修改数据后,使用Repair函数,将修改结果传送到目标数据库。Repair函数的语法格式为:数据管道对象. Repair(连接目标数据库的事务对象名)Repair函数的返回值:l 1 函数执行成功。l 5 未建立与数据库

8、的连接。l 6 参数错误。l 9 访问目标数据库的SQL语句致命错误。l 10 已经达到指定的最大错误数。l 12 不正确的表语法。l 15 数据管道已经在运行。l 17 目标数据库出错。l 18 目标数据库处于只读状态,不能写入数据。11.2 数据管道的建立与使用11.2.1 在画板中使用数据管道创建数据管道对象时,除了提供数据源和目标数据源外,还需提供以下信息。l 需要复制的源数据库中的表。l 需要复制到目标数据库中的位置。l 要完成的数据管道操作。l 允许发生错误的最大数。l 是否需要包括数据库的扩展特性。下面以实例来介绍在画板中建立数据管道及使用方法。【实例11-1】在画笔中实现数据库

9、之间的数据交换要求:将mydata2.db(【实例3-4】)中的班级表class中的数据复制到数据库manage.db(实训3)中。技术要点:数据管道的建立、设置、运行、修改。操作步骤:(1)连接数据库mydata2.db,浏览班级表class中的数据。(2)连接数据库manage.db。(3)建立工作区e:studentdatapipe.pbw、建立应用datapipe。(4)单击Power工具栏上New按钮,打开New对话框后选择Database标签页,如图11-1所示。图11-1 New对话框的Database标签页(5)选择Data Pipeline图标,在Target下拉列表框中选择

10、一个目标,然后单击OK按钮,打开New Data Pipeline对话框,如图11-2所示。图11-2 New Data Pipeline对话框在此对话框中有两个工作要做,第一是要选择数据管道的数据源类型,第二是要设置源表和目的表的数据库连接。本例的数据源类型选择Quick Select,源数据库连接选择mydata2,目标数据库选择manage。(6)设置好数据源和连接数据库后,单击OK进入Select Tables对话框,如图11-3所示。图11-3 New Data Pipeline对话框此对话框用于选择要进行数据传递的表和列。现在选择班级表class,选择Add All按钮将所有的列都

11、加进来。(7)选择要复制的表和列后单击OK,进入数据管道画笔工作区,如图11-4所示。图11-4 数据管道画笔工作区在Options下拉列表框中选择Replace-Drop/Insert Rows管道操作方式,选中Extended Attributes复选框,存盘输入数据管道名为p_class。(8)单击数据管道画笔工具栏上的Execute(执行)图标或从Design菜单中选择Execute(执行)命令。如果在定义数据管道的数据源时指定了检索参数,会显示一个对话框输入检索参数的取值。(9)关闭数据管道画笔,连接数据库manage.db,观察班级表class是否复制成功。说明:(1)对于图11-

12、4中的数据管道画板各选项内容说明如下:l Table:目标表名。l Key:目标表的主键名。l Options:管道选项,它以下拉列表框形式提供了下列数据管道操作方式。Create-Add Table:在目标数据库中创建新表并复制所有数据。如果在目标数据库中已经存在了同名的表,数据管道运行时将会提示一个对话框,提醒同名的表已存在。Replace-Drop/Add Table:删除目标数据库中的同名表,然后创建新表并复制所有数据。Refresh-Delete/Insert Row:数据管道将删除目的数据库中指定目的表的所有数据,然后再插入源表的数据。这种方式要求目的表已经存在,否则数据管道操作失

13、败。Append-Insert Rows:目的表中原有数据被保留,然后插入源表的数据。Update-Update/Insert Rows:数据管道对源数据表中键值与目的表中的键值匹配的行生成SQL UPDATE语句,由该语句修改目的表中的相应行;对源表中键值与目的表中键值不匹配的行生成SQL INSERT语句,由该语句将相应行插入到目的表中。l Max Errors列表框。此选项用于指定数据库管道允许的最大错误数,当数据管道运行过程中发生的错误数超过这个值时,数据管道将终止执行。l Commit列表框。此选项用于指定数据管道提交数据的频率,及每写入多少行数据后提交一次。(2)修改数据管道错误在

14、数据管道的运行过程中,随时可能因数据完整性等多种原因而产生错误,PowerBuilder会自动把出错的行显示在数据窗口中。修改错误的具体方法为:1)出错行修改键列的值。2)单击数据管道画笔工具条上的Update DB图标,提交修改后的数据。3)重复上述步骤,直到所有数据被修正。11.2.2 在程序中使用数据管道数据管道既可以在开发环境下使用,也可以在程序中通过编程实现数据管道的功能。在程序中实现数据管道的步骤主要包括:l 建立数据管道对象。l 建立支撑的数据管道用户对象。l 建立操作环境。l 用户控制运行。下面以实例来介绍在程序中实现数据管道的方法。【实例11-2】利用数据管道实现数据汇总要求

15、:本例是就业信息管理系统中的一个汇总模块,各系学生的就业数据录入到jy1.db的就业数据表jyb中,院就业处有一个汇总数据库jy.db,该库中的数据表jyb和各系的jyb数据结构完全一致。每次系里需要更新数据时,只需将数据库jy1.db导入到jy.db所在的文件夹下,然后点击“汇总模块”,系统自动将jy1.db中的jyb中的全部数据追加到jy.db的jyb中。jyb的主键是就业编号,如果在汇总时相同的就业编号已存在,则进行更新。本例的运行效果如图11-5所示。图11-5 运行效果图技术要点:在程序中实现数据管道。操作步骤:(1)打开上例中的工作区e:studentdatapipe.pbw。(2)创建数据库jy1.db,创建数据表jyb。表中包含jybh(就业编号)、name(姓名)、xb(性别)、bjname(班级名)、xname(系名)、dy(导员)、csrq(出生日期)、mz(民族)、sfzh(身份证号

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号