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

上传人:b****3 文档编号:2153580 上传时间:2022-10-27 格式:DOCX 页数:27 大小:343.08KB
下载 相关 举报
空间数据库课程设计报告第五章.docx_第1页
第1页 / 共27页
空间数据库课程设计报告第五章.docx_第2页
第2页 / 共27页
空间数据库课程设计报告第五章.docx_第3页
第3页 / 共27页
空间数据库课程设计报告第五章.docx_第4页
第4页 / 共27页
空间数据库课程设计报告第五章.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

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

《空间数据库课程设计报告第五章.docx》由会员分享,可在线阅读,更多相关《空间数据库课程设计报告第五章.docx(27页珍藏版)》请在冰豆网上搜索。

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

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

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

一、向SDO_GEOMETRY列中插入数据

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

SQL语句如下:

程序5—1

CREATETABLEsales_regions

idNUMBER,

geomSDO_GEOMETRY

);

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

程序5-2

INSERTINTOsales_regionsVALUES

10000,--SALES_REGIONSID

SDO_GEOMETRY--usetheSDO_GEOMETRYconstructor

2003,--Atwo-dimensionalPolygon

8307,--SRIDisGEODETIC

NULL,--SDO_POINT_TYPEisnullasitisnotapoint

SDO_ELEM_INFO_ARRAY(1,1003,1),--Apolygonwithjustonering

SDO_ORDINATE_ARRAY--SDO_ORDINATESfield

-77.04487,38.9043742,--coordinatesoffirstvertex

-77.046645,38.9040983,--othervertices

-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--coordinatesoflastvertexsameasfirstvertex

);

二、加载和转换空间数据

(一)用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

LOADDATA

INFILE*

INTOTABLEsales_regions

APPEND

FIELDSTERMINATEDBY'|'

TRAILINGNULLCOLS

idNULLIFID=BLANKS,

geomCOLUMNOBJECT

SDO_GTYPEINTEGEREXTERNAL,

SDO_POINTCOLUMNOBJECT

XFLOATEXTERNAL,

YFLOATEXTERNAL

BEGINDATA

1|2001|-76.99022|38.888654|

2|2001|-77.41575|38.924753|

将该文件用DOS导入,

插入了数据,

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

程序5-6

LOADDATA

INFILEsales_regions.dat

INTOTABLEsales_regions

APPEND

FIELDSTERMINATEDBY'|'

TRAILINGNULLCOLS

idNULLIFID=BLANKS,

geomCOLUMNOBJECT

SDO_GTYPEINTEGEREXTERNAL,

SDO_POINTCOLUMNOBJECT

XFLOATEXTERNAL,

YFLOATEXTERNAL

程序5-7

1|2001|-76.99022|38.888654|

2|2001|-77.41575|38.924753|

程序5-5

SQLLDRspatial/spatialCONTROL=sales_regions.ctlDATA=sales_region.dat

这样和程序5-3的功能是相同的。

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

程序5-8

LOADDATA

INFILE*

CONTINUEIFNEXT(1:

1)='#'

INTOTABLEsales_regions

APPEND

FIELDSTERMINATEDBY'|'

TRAILINGNULLCOLS

idCHAR(6),

geomCOLUMNOBJECT

SDO_GTYPEINTEGEREXTERNAL,

SDO_SRIDINTEGEREXTERNAL,

SDO_ELEM_INFOVARRAYterminatedby'/'(EFLOATEXTERNAL),

SDO_ORDINATESVARRAYterminatedby'/'(OFLOATEXTERNAL)

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|/

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

(二)在Oracle数据库之间传输空间数据

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

程序5-9

EXPspatial/spatialFILE=customers.dmpTABLES=customers

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

程序5-10

IMPscott/tigerFILE=customers.dmpIGNORE=YTABLES=CUSTOMERS

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

程序5-11

IMPSYSTEM/MANAGERFROMUSER=spatialTOUSER=scottFILE=customers.dmp

在不同的Oracle数据库之间传输数据的另一种机制是可传输的表空间,利用这种机制,可以在两个数据之间传输整个表空间,如程序5-12:

程序5-12

CONNECTSPATIAL/SPATIAL

EXECUTESDO_UTIL.PREPARE_FOR_TTS('TBS');

CONNECTSYSTEM/MANAGERASSYSDBA

EXECUTEDBMS_TTS.TRANSPORT_SET_CHECK('TBS',TRUE);

ALTERTABLESPACETBSREADONLY;

EXIT

导入rans_ts.dmp中的内容:

程序5-13

IMPUSERID="'SYS/'"TRANSPORT_TABLESPACE=YFILE=trans_ts.dmpDATAFILES='sdo_tts.dbf'TABLESPACES=tbs

导入后,应该改变表空间TBS以允许对其进行读/写操作,并执行SDO_UTIL.INITIALIZE_INDEXES_FOR_TTS过程来启用空间索引:

程序5-14

CONNECTSYS/

ALTERTABLESPACETBSREADWRITE;

CONNECTspatial/spatial;

EXECSDO_UTIL.INITIALIZE_INDEXES_FOR_TTS;

SDO_UTIL.INITIALIZE_INDEXES_FOR_TTS函数重新启用了空间索引,但是如果尾格式不同,空间索引需要通过ALTERINDEXREBUILD命令进行重建:

程序5-15

ALTERINDEXcustomers_sidxREBUILD;

SDO_MIGRATE程序包中类似于TO_CURRENT的函数可以把空间数据从以前的版本中移植到当前版本中:

程序5-16

EXECUTESDO_MIGRATE.TO_CURRENT('customers','location',100);

其中第三个参数规定了提交间隔为100,也就是每移植customers表的100行数据就提交一次。

(三)在SDO_GEOMETRY和WKT/WKB之间转换

SQL/MM为几何体定义了WKT(熟知文本)和WKB(熟知二进制)格式,程序5-20显示了怎样把一个SDO_GEOMETRY对象转换成WKT格式,使用SDO_GEOMETRY数据类型的GET_WKT方法将WKT作为一个字符大对象返回。

程序5-21显示了另一个使用SDO_UTIL.TO_WKTGEOMETRY函数得到同样结果的方法:

程序5-20

SELECTa.location.GET_WKT()wktFROMcustomersaWHER

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1