《Oracle数据库完全入库过程介绍》由会员分享,可在线阅读,更多相关《Oracle数据库完全入库过程介绍(7页珍藏版)》请在金锄头文库上搜索。
1、第一部分简单空间数据入库1 利用shp2sdo分割shapefile文件。假设shapefile文件(集贸市场)和shp2sdo工具存储路径为C:data 打开命令符窗口(开始运行cmd),设置当前目录为存放.shp文件的目录。在命令行窗口中输入:cd C:data 运行SHP2SDO.EXE,参数1:SHAPE文件名(不带扩展名), 参数2:ORACLE中的表名 其他参数,默认运行后生成3中文件(*.SQL,*.DAT,*.CTL) 在命令行中输入:shp2sdo 集贸市场 jimaoshichang2 执行SQL语句。方法一: 重新打开一个命令窗口(开始运行cmd) sqlplus sco
2、tt/tigerorcl517,连接到数据库。 打开jimaoshichang.sql,复制粘贴,执行SQL语句。DROP TABLE JIMAOSHICHANG;防止有同名的表出现,先假设有这样一张表,将其删除CREATE TABLE JIMAOSHICHANG ( 区县 VARCHAR2(10), 乡镇名 VARCHAR2(10), 村名 VARCHAR2(10), 企业 VARCHAR2(50), GEOM MDSYS.SDO_GEOMETRY);创建表,最后一个字段存储空间数据DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = J
3、IMAOSHICHANG AND COLUMN_NAME = GEOM ;删除元数据表中关于这张表的记录。元数据表中对应与这张表有一条记录INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO) VALUES (JIMAOSHICHANG, GEOM, MDSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT(X, 39373833.909274168, 39519763.519715697, 0.000000050), MDSYS.SDO_DIM_ELEMENT(Y, 4369176
4、.981283660, 4507295.457671791, 0.000000050) ) ); 向元数据表中插入该表的一条元数据COMMIT;方法二:在SQL PLUS中运行jimaoshichang.sql。3 执行控制语句将图层数据入库,导入到前面建的新表当中 打开命令符窗口(开始运行cmd),设置当前目录为存放.shp文件的目录。在命令行窗口中输入:cd C:data 执行sqlldr scott/tigerorcl517 control= jimaoshichang.ctl4 转换空间数据的数据格式执行下列sql语言:EXECUTE SDO_MIGRATE.TO_CURRENT(ji
5、maoshichang表名,GEOM空间字段名); 5 创建空间索引执行下列sql语言:CREATE INDEX jimaoshichangsuoyin索引名ON jimaoshichang要创建索引的表名(GEOM要创建控件索引的空间字段)INDEXTYPE IS MDSYS.SPATIAL_INDEX;第二部分空间数据迁移1 创建一张新表,用来存放jimaoshichang表中的数据DROP TABLE MARKET;CREATE TABLE MARKET ( C_MARKETNAME VARCHAR2(50) , G_FEATURESHAPE MDSYS.SDO_GEOMETRY );
6、2将描述数据表(也就是图层)的元数据写入元数据表。DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = MARKET AND COLUMN_NAME = G_FEATURESHAPE ;INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO) VALUES (MARKET, G_FEATURESHAPE, MDSYS.SDO_DIM_ARRAY (MDSYS.SDO_DIM_ELEMENT(X, 39373833.909274168, 39519763.519
7、715697, 0.000000050), MDSYS.SDO_DIM_ELEMENT(Y, 4369176.981283660, 4507295.457671791, 0.000000050) ) ); 3.往新建的数据表中插入数据 insert into MARKET (C_MARKETNAME,G_FEATURESHAPE)select 企业,GEOM from jimaoshichang;4创建索引CREATE INDEX GIDX_GT_M_MARKETON MARKET (G_FEATURESHAPE)INDEXTYPE IS MDSYS.SPATIAL_INDEX;附:5.CoG
8、isMap的元数据表定义CREATE TABLE DBSCHEMA_OGIS_FEATURE_TABLES (GEOM_TABLE_NAME VARCHAR2(129 byte) NOT NULL, GEOM_TABLE_TYPE VARCHAR2(129 byte) NOT NULL, GEOM_COLUMN_NAME VARCHAR2(129 byte) NOT NULL, GEOM_TYPE NUMBER(10) NOT NULL, GEOM_EXTENT MDSYS.SDO_GEOMETRY DEFAULT MDSYS.SDO_GEOMETRY( 2003, - 2-dimension
9、al polygon NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3), - one rectangle (1003 = exterior) MDSYS.SDO_ORDINATE_ARRAY(0,0,1,1) ) NOT NULL, CONSTRAINT KEY_1_1_1 PRIMARY KEY(GEOM_TABLE_NAME)6在CoGisMap的元数据表中填入元数据。执行脚本:INSERT INTO DBSCHEMA_OGIS_FEATURE_TABLES (GEOM_TABLE_NAME ,GEOM_TABLE_TYPE ,GEOM_COL
10、UMN_NAME , GEOM_TYPE ) VALUES (GT_M ,TABLE ,GEOM ,4 )至此,这个空间数据表就可以在控件中显示了。附件 关于空间数据表的创建和删除- 创建空间数据表的脚本:- 表中要有一列定义为空间数据存储结构(MDSYS.SDO_GEOMETRY)。CREATE TABLE DEMO.TEST_GEOM(ObjectID NUMBER,RecordID NUMBER,OperateCHAR(2),ChangeDateDATE,GEOMMDSYS.SDO_GEOMETRY); - 创建空间数据表之后,要将描述数据表(也就是图层)- 的元数据写入元数据表。- 各
11、列含义分别为:- 空间数据表的名称,- 空间所在列的名称,- 空间数据表(图层)的维度信息,-参考坐标系索引。- 其中图层维度信息包含24条记录,记录的各列含义如下:- 维度名称(X,Y或Z)-最小值(NUMBER)-最大值(NUMBER)-容差(NUMBER)INSERT INTO USER_SDO_GEOM_METADATAVALUES (TEST_GEOM,GEOM,MDSYS.SDO_DIM_ARRAY( MDSYS.SDO_DIM_ELEMENT(X, 1144.804047, 3762.220078, 0.005),MDSYS.SDO_DIM_ELEMENT(Y, 66.337745, 2894.969755, 0.005),NULL - SRID);- 如何删除空间数据表(图层)?- 分为两步:1、删除表,2、删除元数据。- 删除表DROP TABLE TEST_GEOM;- 删除元数据DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = TEST_GEOMAND COLUMN_NAME = GEOM;