PB/Sybase开发过程中数据库转移介绍(二)

2008-10-13    | |
打印本文章
RSS

导读:本文了6种PB/Sybase开发过程中数据库转移的方法均在系统的设计过程中的得以实现,其目的是要设计过程简单,而且要满足用户的需要,以减少后期的维护工作。

关键词:PB/Sybase PB/Sybase开发 Sybase数据库转移

正在加载数据...

  4、分析本地库系统实现转移

  在进行数据转换的过程中,由于各种数据的表的结构都是不一样的,以电信计费的信息费为例,不同的地区信息台使用的软件不同,数据字段几乎都是不一样的,实际的处理中也不是每一个字段的数据都有意义,或者都需要转换到服务器的数据库中,用户往往要求根据自己的需要来选择字段、计算方式以及每列的约束条件(如有些项目有最大值的限制等),利用以上的方法来处理就有些困难。在实际的处理中,我们考虑分析本地数据库的系统表,来得到本地数据库的结构,将数据库中的各个字段呈现在用户的面前。用户作出选择后,加入一定的条件,再进行处理,将利用动态SQL语句生成一个满足条件的表。这样就要求用户能够通过系统来了解磁盘数据库的内容,分析本地库的系统表后将得到较为满意的结果。

  在利用ODBC连接到本地库后,发现并分析了几个系统表(System table),其中有一个表是PBcatcol中记录着用户数据库的结构,其中的一部分如表1所示(如果表为ADDRESS (ID, Name, Address, Phone))。

  PB/Sybase开发过程中数据库转移介绍(表一)

  表 1

  其中:pbc_tnam记录的是用户数据库的表名(Table name) (在Foxbase中一个表就是一个数据库),pbc_cnam记录的是用户数据库的列名(Column name)。

  根据用户输入的文件名称,取消后缀即可得到数据库的表名,定义一个光标即可取得用户数据库的列名,将数据库展示在用户的面前,用户根据需要选择后再作处理。



DECLARE My_Cursor CURSOR FOR
SELECT pbcatcol.pbc_cnam
FROM pbcatcol
......

  利用分析系统表来得到用户数据库的结构是一个比较有效的方法,它能够对未知的数据库结构有一个清晰的认识,而不需要事先知道它的结构。但是它仍然有一个问题,就是通过分析系统表不能得到用户数据库的列的数据类型,在转换到服务器的数据库的时候要借助用户的输入才能够确定,即提供用户必须选择的项目来确定某一个字段的数据类型。能够比较好地完成数据的转换,具有相当大的灵活性,程序并不要关心用户数据库的类型,可以广泛地使用于各种类型的数据库(Foxbase,Access等)。

  5、分析服务器系统实现转移

  要确定一个数据库的结构,只要确定用户数据库的字段名和数据类型就可以了。利用分析本地库系统表的方式可以得到数据库的字段名,但是用户数据库的字段的数据类型仍然无法获得。通过分析Sybase服务器数据库的系统表可以得到服务器数据库中的表的字段名和数据类型。在设计的时候考虑采取两种方法相结合的办法,先利用(数据管道)Pipeline将用户本地的数据库完整地转换到服务器的数据库中的一个表,然后通过分析服务器上的系统表:Pbcatcol,Syscolumns,Systypes。其中Pbcatcol表中同前面一样记录着用户表的表名和字段名等,Syscolumns中记录着数据库中所有表的字段名(Name)、字段的数据类型(Type)、字段的长度(Length)和精确度(Prec,Scale)等。将三个表关联后可从中取得从磁盘上转换到服务器上的表的完整的结构(可以通过定义光标或者直接利用数据窗口的方式完成具体的设计)。



SELECT syscolumns.name, systypes.name
FROM pbcatcol, syscolumns, systypes, length
WHERE (syscolumns.type=systypes.type)
and (pbcatcol.pbc_cnam=syscolumns.name)
and ((pbcatcol.pbc_tnam= 'Address'));
 
  6、分析数据库文件实现转移

  利用数据管道和分析服务器系统表相结合的方法能够比较完整的解决数据的转换问题,但仍然要将本地的数据库完整的转换到服务器上,增加了服务器的负担,占据了一定的存储空间。设计中我们试用了另一种方法,通过分析本地数据库本身的结构,希望有所收获。利用Visual C++以二进制的方式将数据库文件打开(此种方法只对Foxbase文件进行了分析)发现如图1所示的结构,文件存储的方式是表头和数据两个部分,表头以十六进制的0D结尾。其表头的规律是:第一个32个字节是文件头;从第二个32个字节后是第一个字段名和数据类型;第三个32字节开始又是第二个字段名和数据类型。以此类推,直到0D结束,其结构如表2所示。不足的部分添十六进制的00,其中数据类型是简写:


C-Char,D-Date,L-Logical,N-Numeric,M-Memo,G-Genera1。

 PB/Sybase开发过程中数据库转移介绍(表二)

  表 2

  于是用PowerBuilder提供的文件处理函数FileOpen(),FileSeek(),FileRead(),FileClose()等,可以分析Foxbase数据库文件,得到本地数据库的字段和数据类型。对各种字段的长度可以让用户来设定,或者系统按照最大和系统的要求来设定。在服务器的数据库上来产生相应的表,利用动态的数据窗口(Datawindow)可以显示本地库的数据和处理的结果。

  7、结束语

  对于完成数据的转移有很多种的方法。在实际的处理过程中,要根据用户的需求和系统的设计等各个方面来考虑。其目的是要设计过程简单,而且要满足用户的需要,要求有较高的适应性和灵活性,以减少后期的维护工作。本文上述的6种方法均在系统的设计过程中得以实现,取得了较好的效果。


PB/Sybase开发过程中数据库转移介绍
 PB/Sybase开发过程中数据库转移介绍(一)
 PB/Sybase开发过程中数据库转移介绍(二)

原文出处:http://tech.ccidnet.com/art/5889/20080925/1579329_2.html
作者:梦幽树|小鱼    
  评论
 
Sybase的这种异构数据复制和传统复制有什么区别?近年来数据移动、数据存储和实时数据传输运行数据等技术都发生了什么样的变化?
 
,“过去25年我们工作的重点可能是为员工访问企业内部数据服务,将来25年IT系统的主要职责可能慢慢转为分析数据,得出结果,然后把结果输入管理层或者其他对此有需要……
 
最新版本的Afaria是Sybase Information Anywhere Suite的核心组件,它包含的新型中继服务器架构可跨多个Information Anywhere Suite的组件提供高度安全的数据同步……
 
Sybase数据库SQL语句REPLACE的对应函数有哪些?本文主要介绍了Oracle和Sybase函数。
 
专注于信息管理和信息移动技术的企业级软件公司Sybase于2008年11月4日在大中华区用户大会上宣布,SQL Anywhere 11中文版本近期已正式上市。
在SQL Server中,我们如何进行索引设计来提升系统的性能和对查询进行优化,是许多用户非常关注的问题,在本次技术专题中,我们将分群集索引和非群集索引设计两部分来为您详细分析。
本技术专题主要为使用Oracle SQL Developer和其他开发工具。包括如何使用Oracle SQL Developer和其他开发工具、使用Oracle Database Home Page、在Oracle中使用SQL*Plus等方面。
本专题为QL SELECT语句基础。侧重概述了如何使用SELECT来访问SQL数据库中所有内容以及组成SELECT语句的许多子句名称和功能;同时还阐述了如何使用DISTINCT关键字消除重复的行,以及如何正确使用ORDER BY子句来排序数据。
最新更新
专家答疑
技巧
Brian Fedorko
Oracle数据库审计功能十分强大、灵活并且易于配置,适当并有效地使用数据库审计功能是拥有高效安全策略的基础。
Brian Peasland
Oracle数据库二进制文件和库文件是高版本版本的,而备份的数据库内部如果仍然是较低版本,那么Oracle将不允许你打开数据库,除非你完成了升级过程。
Maria Anderson
在Windows XP环境下,使用数据库升级助手将Oracle从9.2.0.1升级到10g R2,出现DBUA不能识别Oracle数据库的SID问题如何解决。

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
登录Email
请输入您的登录Email
密码
下次自动登录