上一篇 | 下一篇

在 DB2 UDB 中复制空间数据

发布: 2008-7-01 13:00 | 作者: admin | 来源: | 查看: 0次

在 DB2 UDB 中复制空间数据

热 荐

【字体:小 大】

在 DB2 UDB 中复制空间数据

作者:- 文章来源:- 点击数:1791 更新时间:2006-4-22

图 5. 空间数据复制概览

下面几节将更详细地解释把空间数据转换成 BLOB 的必要性,以及如何设置源表和目标表。随后我们还会给出一个例子,引导您在 Replication Center 中执行各种必要的操作,并帮助您完整地理解这种空间数据复制方法。

结构化类型的转换函数

现在,让我们来看一看空间数据是如何在数据库服务器和客户机之间传送的。空间数据的表现形式为结构化的数据类型。正如在其他任何一种编程语言一样,结构化数据无法实现原封不动的简单传送。我们需要对其进行线性化处理,或将其转换成某种形式的字节流。然后,再把这种字节流从客户机传送到服务器上,反之亦然。

DB2(以及 SQL 标准)使用所谓的“转换函数”(transform function)来执行线性化操作,将 DB2 内置的结构化数据转换成外部表现形式,也可以转换回来。这种外部表现形式是一种单一的基于内置数据类型的标量值。内置数据类型可以是 VARCHAR、INTEGER、BLOB 或 CLOB,或者是 DB2 中包含的任何其他数据类型。转换结果到底要求为何种数据类型,这取决于特定的转换过程。在 DB2 Spatial Extender 中,我们用 BLOB 代表空间数据的外部二进制表现形式,而用 CLOB 代表空间数据的外部文本表现形式。

为了在 DB2 客户机和服务器之间实现通信过程,我们需要两个不同的转换函数。一个函数用来将空间数据从 SQL 形式转换成外部数据格式,另一个函数则将外部数据格式转换成 SQL 形式。为了简化这两个转换函数的使用过程,您可以采用“转换组”(transform group)。转换组中包含一个 FROM SQL 函数和一个 TO SQL 函数,前者负责将结构化数据转换成外部格式,后者负责根据用外部格式表示的数据构造出 SQL 数据库中的结构化数值。

转换组

下面让我们通过一个例子,看看转换函数和转换组的概念,以及它们的应用情况。DB2 Spatial Extender 提供了四个转换组。每一个转换组都包含一个将几何图形转换成外部表现形式的函数和一个将外部表现形式转换成几何图形的函数。这四个转换组支持下面几种数据格式: ST_WellKnownText

在几何图形和相应的已知文本表现形式(well-known text,WKT)之间转换。WKT 以文本数据的形式保存在 CLOB 中,最大长度为 2GB。ST_AsText 方法用于将几何图形转换为 WKT。 ST_WellKnownBinary

在几何图形和相应的已知二进制(well-known binary,WKB)表现形式之间进行转换。WKB 以二进制数据的形式存储在 BLOB 中,最大长度为 2GB。ST_AsBinary 方法可用于将几何图形转换成 WKB。 ST_GML

在几何图形和对应的地理标记语言(Geography Markup Language,GML)之间进行转换。GML 以文本数据的形式保存在一个 CLOB 字段中,最大长度为 2GB。ST_AsGML 方法可用于将几何图形转换成 GML。 ST_Shape

在几何图形和对应的 ESRI Shape 表现形式之间进行转换。Shape 以二进制数据的形式存储在一个 BLOB 字段中,最大长度为 2GB。ST_AsShape 方法可用于将几何图形转换成 Shape。

从外部表现形式(WKT、WKB、GML、Shape)转换成相应的几何图形并存储在 SQL 数据库中的过程是由 ST_Geometry、ST_Point、ST_LineString、ST_Polygon、ST_GeomCollection、ST_MultiPoint、ST_MultiLineString 以及 ST_MultiPolygon 等构造函数实现的。每一个构造函数都经过重载,既可以接受 BLOB,也可以接受 CLOB 作为输入参数。根据输入数据的不同,这些构造函数可以决定您提供的到底是何种格式,然后对数据进行恰当的编码。

转换组的使用方法用 清单 1中的 SQL 代码就很容易解释明白。 清单 1. 使用转换组

字号: | 推荐给好友

43/4<1234>

评分:0

我来说两句