空间数据库课程设计报告第五章

2020-05-12 08:21

空间数据库课程设计报告 chapter-5

第5章 空间数据的加载、传输和验证

一、 向SDO_GEOMETRY列中插入数据

新建一个sales_regions表,向表中插入一个多边形几何体,运用前面学过的SDO_GEOMETRY数据类型。SQL语句如下:

程序5—1

CREATE TABLE sales_regions (

id NUMBER, geom SDO_GEOMETRY );

把表示销售区域的多边形插入到这表中的geom列中,SQL语句如下:

程序5-2

INSERT INTO sales_regions VALUES (

10000, -- SALES_REGIONS ID

SDO_GEOMETRY -- use the SDO_GEOMETRY constructor (

2003, -- A two-dimensional Polygon 8307, -- SRID is GEODETIC

NULL, -- SDO_POINT_TYPE is null as it is not a point SDO_ELEM_INFO_ARRAY (1, 1003, 1), -- A polygon with just one ring SDO_ORDINATE_ARRAY -- SDO_ORDINATES field (

-77.04487, 38.9043742, -- coordinates of first vertex -77.046645, 38.9040983, -- other vertices -77.04815, 38.9033127, -77.049155, 38.9021368,

-77.049508, 38.9007499, -77.049155, 38.899363, -77.048149, 38.8981873, -77.046645, 38.8974017, -77.04487, 38.8971258, -77.043095, 38.8974017, -77.041591, 38.8981873, -77.040585, 38.899363, -77.040232, 38.9007499, -77.040585, 38.9021368, -77.04159, 38.9033127, -77.043095, 38.9040983, -77.04487, 38.9043742 -- coordinates of last vertex same as first vertex ) )

空间数据库课程设计报告 chapter-5

);

二、 加载和转换空间数据

(一) 用SQL*Loader从文本文件加载

SQL*Loader是Oracle的一个工具,用于从文件向Oracle表加载数据,可以执行批量加载。SQL*Loader由控制文件和数据组成,控制文件定义了数据的格式,怎样把文件数据分解成Oracle中的行,以及怎样把这些行分解为不同的列。数据可以在同一个控制文件的BEGINDATA关键字之后被指定,也可以存储在一个独立文件里。

加载点数据时,不需要指定SDO_SRID、SDO_ELEM_INFO_ARRAY和SDO_ORDONATE_ARRAY组件,它们将被自动设为NULL。程序5-3是将点数据插入geom列中,数据在控制文件中被指定:

程序5-3

LOAD DATA INFILE *

INTO TABLE sales_regions APPEND

FIELDS TERMINATED BY '|' TRAILING NULLCOLS (

id NULLIF ID = BLANKS, geom COLUMN OBJECT (

SDO_GTYPE INTEGER EXTERNAL, SDO_POINT COLUMN OBJECT (

X FLOAT EXTERNAL, Y FLOAT EXTERNAL ) ) )

空间数据库课程设计报告 chapter-5

BEGINDATA

1|2001|-76.99022|38.888654| 2|2001|-77.41575|38.924753| 将该文件用DOS导入,

插入了数据,

也可将控制文件和数据文件分开,在命令行中指定这个文件,如程序5-6是控制文件,程序5-7是数据文件,DOS中的语句改为程序5-5:

程序5-6

LOAD DATA

INFILE sales_regions.dat INTO TABLE sales_regions APPEND

FIELDS TERMINATED BY '|' TRAILING NULLCOLS (

id NULLIF ID = BLANKS, geom COLUMN OBJECT (

SDO_GTYPE INTEGER EXTERNAL, SDO_POINT COLUMN OBJECT (

X FLOAT EXTERNAL, Y FLOAT EXTERNAL ) ) )

程序5-7

空间数据库课程设计报告 chapter-5

1|2001|-76.99022|38.888654| 2|2001|-77.41575|38.924753|

程序5-5

SQLLDR spatial/spatial CONTROL=sales_regions.ctl DATA=sales_region.dat 这样和程序5-3的功能是相同的。

加载非点数据时,需要填充SDO_GEOMETRY中的SDO_ELEM_INFO域和SDO_ORDINATES域,如程序5-8:

程序5-8

LOAD DATA INFILE *

CONTINUEIF NEXT(1:1)='#' INTO TABLE sales_regions APPEND

FIELDS TERMINATED BY '|' TRAILING NULLCOLS (

id CHAR(6), geom COLUMN OBJECT (

SDO_GTYPE INTEGER EXTERNAL, SDO_SRID INTEGER EXTERNAL,

SDO_ELEM_INFO VARRAY terminated by '/' (E FLOAT EXTERNAL), SDO_ORDINATES VARRAY terminated by '/' (O FLOAT EXTERNAL) ) ) BEGINDATA

10000| 2003| 8307| #1| 1003| 1|/

#-77.04487| 38.9043742| -77.046645| 38.9040983| -77.04815| 38.9033127|-77.049155| #38.9021368| -77.049508| 38.9007499| -77.049155| 38.899363| -77.048149| #38.8981873| -77.046645| 38.8974017| -77.04487| 38.8971258| -77.043095| #38.8974017| -77.041591| 38.8981873| -77.040585| 38.899363| -77.040232| #38.9007499| -77.040585| 38.9021368| -77.04159| 38.9033127| -77.043095| #38.9040983| -77.04487| 38.9043742| -77.04487| 38.9043742|/

空间数据库课程设计报告 chapter-5

如果数据被包含在控制文件中,SQL*Loader就不能处理多于64K的数据,为了变通解决这个限制,记录可被分割成多行,如果每行的首字母以“#”开始,记录就是连续的。 (二) 在Oracle数据库之间传输空间数据

加载数据最简单的方式是使用独立于Qracle平台的.dmp文件,这种文件被Oracle的Import/Export实用工具所使用,如程序5-9是从spatial模式中导出customers表:

程序5-9

EXP spatial/spatial FILE=customers.dmp TABLES=customers

使用Oracle Import实用工具这个.dmp文件导入到scott模式中,如程序5-10:

程序5-10

IMP scott/tiger FILE=customers.dmp IGNORE=Y TABLES=CUSTOMERS

也可以用fromuseer和touser命令行参数向scott模式中导入数据,导入的命令是以系统账户(system/manager)来运行的,如程序5-11:

程序5-11


空间数据库课程设计报告第五章.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:选修《中外人物传记》字词梳理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: