1、Oracle数据库完全入库过程说明第一部分简单空间数据入库1 利用shp2sdo分割shapefile文件。假设shapefile文件(集贸市场)和shp2sdo工具存储路径为C:data1 打开命令符窗口(开始运行cmd),设置当前目录为存放.shp文件的目录。在命令行窗口中输入:cd C:data2 运行SHP2SDO.EXE,参数1:SHAPE文件名(不带扩展名), 参数2:ORACLE中的表名 其他参数,默认 运行后生成3中文件(*.SQL,*.DAT,*.CTL) 在命令行中输入:shp2sdo 集贸市场 jimaoshichang2 执行SQL语句。方法一:1 重新打开一个命令窗口
2、(开始运行cmd)2 sqlplus scott/tigerorcl517,连接到数据库。3 打开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 = JIMAOSHICHANG AND
3、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.981283660, 4507295.457671791, 0.000000050) ) );
4、COMMIT;方法二:在SQL PLUS中运行jimaoshichang.sql。3 执行操纵语句1 打开命令符窗口(开始运行cmd),设置当前目录为存放.shp文件的目录。在命令行窗口中输入:cd C:data2 执行sqlldr scott/tigerorcl517 control= jimaoshichang.ctl4 转换空间数据的数据格式执行下列sql语言:EXECUTE SDO_MIGRATE.TO_CURRENT(jimaoshichang,GEOM); 5 创建空间索引执行下列sql语言:CREATE INDEX jimaoshichangsuoyinON jimaoshich
5、ang(GEOM)INDEXTYPE IS MDSYS.SPATIAL_INDEX;第二部分空间数据迁移1 创建一张新表,用来存放jimaoshichang表中的数据DROP TABLE MARKET;CREATE TABLE MARKET ( C_MARKETNAME VARCHAR2(50) , G_FEATURESHAPE MDSYS.SDO_GEOMETRY ); 2将描述数据表(也确实是图层)的元数据写入元数据表。DELETE FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = MARKET AND COLUMN_NAME = G_FEATU
6、RESHAPE ;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.519715697, 0.000000050), MDSYS.SDO_DIM_ELEMENT(Y, 4369176.981283660, 4507295.457671791, 0.000000050) ) ); 3.往新建的数据
7、表中插入数据 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.CoGisMap的元数据表定义CREATE TABLE DBSCHEMA_OGIS_FEATURE_TABLES (GEOM_TABLE_NAME VARCHAR2(129 byte) NOT NULL, GEOM_TABLE_
8、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-dimensional polygon NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3), - one rectangle (1003 = exterior) MDSYS.SDO_ORDINAT
9、E_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_COLUMN_NAME , GEOM_TYPE ) VALUES (GT_M ,TABLE ,GEOM ,4 )至此,那个空间数据表就能够在控件中显示了。附件 关于空间数据表的创建和删除- 创建空间数据表的脚本:- 表中要有一
10、列定义为空间数据存储结构(MDSYS.SDO_GEOMETRY)。CREATE TABLE DEMO.TEST_GEOM( ObjectID NUMBER, RecordID NUMBER, Operate CHAR(2), ChangeDate DATE, GEOM MDSYS.SDO_GEOMETRY); - 创建空间数据表之后,要将描述数据表(也确实是图层)- 的元数据写入元数据表。- 各列含义分不为:- 空间数据表的名称,- 空间所在列的名称,- 空间数据表(图层)的维度信息,- 参考坐标系索引。- 其中图层维度信息包含24条记录,记录的各列含义如下:- 维度名称(X,Y或Z)- 最小
11、值(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_GEOM AND COLUMN_NAME = GEOM;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1