利用PB的数据管道快速进行数据转换
张明媚
一、前言
企业的计算机应用经历了从单机到网络,从“孤岛”型系统到综合管理信息系统的过程。在综合管理信息系统MIS
的建设中通常会遇到这样一种情况:很多企业在未进行MIS
开发前就针对一些部门开发了适合个别需要的小系统。通过对这些原有系统的仔细分析发现,这些系统集中于比较狭窄的业务范围内,系统相对独立,运行情况也比较好,且系统中存在大量的数据,这些数据是其他系统需要的数据。因此对于这些系统原则上不再需要重新开发,只需设计相应的接口软件,将原有系统的数据转换到MIS
系统的数据库中,实现数据的集成和共享即可。如果选用专为各种数据库设计的客户端应用开发工具PowerBuilder(以下简称PB)作为MIS
系统的开发工具,那么我们就可以利用PB
提供的数据转换的工具——数据管道来完成以上的工作。
二、工作原理
在安装并调通网络后,在PB 中对ODBC
接口或专用接口进行配置,使PB
能通过具体的接口与数据库服务器相连。ODBC(Open Data Base Connectivity)是微软公司提出的开放式数据库互连标准接口。PB
5.0 在Windows 95 和Windows NT 下提供的ODBC 接口有dBASE、Excel、SQL Anywhere
等,也就是说,PB 可以通过ODBC
接口并加载连接到不同数据库的驱动程序与dBASE、Excel、SQL Anywhere
等数据库相连。由于ODBC
是通用的数据库接口,调用层次多,操作数据库速度慢,因此,对于大型数据库(如Sybase、Oracle
等)一般都是用PB 提供的专用接口与之连接。PB 5.0 在Windows 95 和Windows
NT 下提供的专用接口有Microsoft SQL Server 6.0、Oracle Version 7.1 和Sybase SQL
Server System 10 和System 11 等。用户可以在安装PB
时根据需要选择安装相应的接口。数据转换是在两个不同的数据库之间进行的,因此对接口的配置工作要做两次。到这里为止,我们只是建好与数据库的连接,具体的数据转换工作还得由数据管道来完成。
数据管道(Pipeline)是PB
提供的一个用于转换数据的智能对象,它可以在图形方式下把dBASE、Excel
等数据库中的数据转入大型数据库而无需SQL
编程。它允许把一个数据库中的数据(一个或多个表中的部分或全部行)转入至另一个数据库的一个表中(这个表可以存在或不存在)。不同数据库所支持的数据类型可能有差异,数据管道会自动给出不同数据库之间数据类型的最佳转换,但数据管道不支持大文本和图像之类的blob
数据类型。数据管道的具体操作将在实例分析中介绍。
三、实例分析
下面将介绍用Pipeline 将Excel 数据库中的表转入数据库管理系统Sybase10
中,使其成为该库的一个表。Excel 数据库在这里指的是存放在Excel
目录下的所有xls 文件,每一个xls
文件相当于一个表。转换的具体步骤如下:
1、首先必须将Excel 特定工作页(worksheet)的选定范围的数据设置为Excel
的表。在Excel
中,选中要转换的列名及其对应数据,在菜单中选择命令“插入”*"名称”*"定义”,在弹出的对话框中“在当前工作簿的名称”输入“sc_dzl",“sc_dzl"将作为在PB
中要传输数据的表名。
2、运行PB 5.0,点击工具栏上的“Configure ODBC"按钮,在弹出的对话窗口的“Installed
Driver"框中选择“Microsoft Excel Driver",然后按下“Create ..."按钮。这时“ODBC
Microsoft Excel 安装”窗口将会被弹出,在“数据源名”输入“dzl",单击“选定工作目录”按钮,选择定义“sc_dzl"表的xls
文件。
3、单击工具栏上的“DB Profile"按钮,在打开的窗口中点击“New"按钮,会弹出一个如附图所示的窗口。

附图
在“Profile Name"框中输入“EXC",在“DBMS"框中选择“ODBC",“Database
Name"框中输入Excel 文件名(带路径)或“dzl", 单击“OK"按钮,在弹出的“SQL
Data Sources"窗口选择“dzl"后单击“OK"按钮完成。
4、通过专用接口建立与Sybase 数据库的连接。点击工具栏上的“DB
Profile"按钮,在“Profile Name"框中输入“Sybase";在“DBMS"框中选择“SYC
Sybase System 10";“Database Name"框中输入数据库名如“userdb";“Server
Name"内选择数据库所在服务器名称如“Sybase";“Login ID"、“Login
Password"分别填入登录服务器的账户及口令。当我们按下“OK"按钮时完成Sybase
Profile 的设置。
5、单击工具栏上的“Pipeline"按钮,建一个新的数据管道,在“New
Data Pipeline"窗口的上半部选择“SQL Select"作为数据源,在窗口的下半部用“EXC"为“Source
Connection",用“Sybase"作“Destination Connection", 单击“OK"。
6、选择要传输数据的表“sc_dzl",然后单击“Open"按钮,根据需要选中想传输的列,点击工具栏的“SQL"按钮返回到源和目标数据项详细定义窗口,通过该窗口的“Options:”可对数据转换的方式进行选择。数据转换的方式有以下几种:“Create-Add
Table"--在目标库中建立一个新表并复制数据;“Replace-Drop/Add
Table"--删除旧表并复制数据;“Refresh-Delete Rows"--删除表中的现有数据并复制数据;“Append-Insert
Rows"--在现有数据基础上增加新数据。如果目标表比源表中的传输的列数多,可在源表中添加一个字符型的字段与目标表中多余的列相对应;“Update-Update/Insert
Rows"--新增数据的键值如果与现有数据某行的键值一样则覆盖现有数据,否则插入新数据。窗口上的其他选项可直接选用系统提供的默认值,单击“Execute"按钮运行定义好的数据管道完成数据转换。
7、保存新建的数据管道,当下次源表的数据改动时若需要对该表再进行数据转换的操作,可打开该数据管道选择合适的数据转换方式并运行即可。
四、结束语
在上面实例中建立的数据管道也可以在程序中被调用,如果我们在一个窗口的按钮中写下调用数据管道的脚本,那么只需在程序运行时单击该按钮就可在Excel
和Sybase 库之间进行数据转换。