Oracle数据库完全入库过程说明.docx
《Oracle数据库完全入库过程说明.docx》由会员分享,可在线阅读,更多相关《Oracle数据库完全入库过程说明.docx(7页珍藏版)》请在冰豆网上搜索。
![Oracle数据库完全入库过程说明.docx](https://file1.bdocx.com/fileroot1/2022-12/16/018be705-b94c-46dc-8f13-2f167cd79b4c/018be705-b94c-46dc-8f13-2f167cd79b4c1.gif)
Oracle数据库完全入库过程说明
第一部分简单空间数据入库
1.利用shp2sdo分割shapefile文件。
假设shapefile文件(集贸市场)和shp2sdo工具存储路径为C:
\data
1打开命令符窗口(开始→运行→cmd),设置当前目录为存放.shp文件的目录。
在命令行窗口中输入:
cdC:
\data
2运行SHP2SDO.EXE,参数1:
SHAPE文件名(不带扩展名),
参数2:
ORACLE中的表名
其他参数,默认
运行后生成3中文件(*.SQL,*.DAT,*.CTL)
在命令行中输入:
shp2sdo集贸市场jimaoshichang
2.执行SQL语句。
方法一:
1重新打开一个命令窗口(开始→运行→cmd)
2sqlplusscott/tiger@orcl517,连接到数据库。
3打开jimaoshichang.sql,复制粘贴,执行SQL语句。
DROPTABLEJIMAOSHICHANG;
CREATETABLEJIMAOSHICHANG(
区县VARCHAR2(10),
乡镇名VARCHAR2(10),
村名VARCHAR2(10),
企业VARCHAR2(50),
GEOMMDSYS.SDO_GEOMETRY);
DELETEFROMUSER_SDO_GEOM_METADATA
WHERETABLE_NAME='JIMAOSHICHANG'ANDCOLUMN_NAME='GEOM';
INSERTINTOUSER_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)
)
);
COMMIT;
方法二:
在SQLPLUS中运行jimaoshichang.sql。
3.执行操纵语句
1打开命令符窗口(开始→运行→cmd),设置当前目录为存放.shp文件的目录。
在命令行窗口中输入:
cdC:
\data
2执行sqlldrscott/tiger@orcl517control=jimaoshichang.ctl
4.转换空间数据的数据格式
执行下列sql语言:
EXECUTESDO_MIGRATE.TO_CURRENT('jimaoshichang','GEOM');
5.创建空间索引
执行下列sql语言:
CREATEINDEXjimaoshichangsuoyin
ONjimaoshichang(GEOM)
INDEXTYPEISMDSYS.SPATIAL_INDEX;
第二部分空间数据迁移
1.创建一张新表,用来存放jimaoshichang表中的数据
DROPTABLEMARKET;
CREATETABLEMARKET
(
C_MARKETNAMEVARCHAR2(50),
G_FEATURESHAPEMDSYS.SDO_GEOMETRY);
2.将描述数据表(也确实是图层)的元数据写入元数据表。
DELETEFROMUSER_SDO_GEOM_METADATA
WHERETABLE_NAME='MARKET'ANDCOLUMN_NAME='G_FEATURESHAPE';
INSERTINTOUSER_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.往新建的数据表中插入数据
insertintoMARKET(C_MARKETNAME,G_FEATURESHAPE)
select企业,GEOMfromjimaoshichang;
4.创建索引
CREATEINDEXGIDX_GT_M_MARKET
ONMARKET(G_FEATURESHAPE)
INDEXTYPEISMDSYS.SPATIAL_INDEX;
附:
5.CoGisMap的元数据表定义
CREATETABLEDBSCHEMA_OGIS_FEATURE_TABLES("GEOM_TABLE_NAME"VARCHAR2(129byte)
NOTNULL,"GEOM_TABLE_TYPE"VARCHAR2(129byte)NOTNULL,
"GEOM_COLUMN_NAME"VARCHAR2(129byte)NOTNULL,"GEOM_TYPE"
NUMBER(10)NOTNULL,"GEOM_EXTENT""MDSYS"."SDO_GEOMETRY"
DEFAULTMDSYS.SDO_GEOMETRY(
2003,--2-dimensionalpolygon
NULL,
NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),--onerectangle(1003=exterior)
MDSYS.SDO_ORDINATE_ARRAY(0,0,1,1)
)NOTNULL,CONSTRAINT"KEY_1_1_1"PRIMARYKEY("GEOM_TABLE_NAME"))
6在CoGisMap的元数据表中填入元数据。
执行脚本:
INSERTINTODBSCHEMA_OGIS_FEATURE_TABLES
("GEOM_TABLE_NAME","GEOM_TABLE_TYPE","GEOM_COLUMN_NAME",
"GEOM_TYPE")
VALUES('GT_M','TABLE','GEOM',4)
至此,那个空间数据表就能够在控件中显示了。
附件关于空间数据表的创建和删除
--创建空间数据表的脚本:
--表中要有一列定义为空间数据存储结构(MDSYS.SDO_GEOMETRY)。
CREATETABLEDEMO.TEST_GEOM
(
ObjectIDNUMBER,
RecordIDNUMBER,
OperateCHAR
(2),
ChangeDateDATE,
GEOMMDSYS.SDO_GEOMETRY
);
--创建空间数据表之后,要将描述数据表(也确实是图层)
--的元数据写入元数据表。
--各列含义分不为:
--空间数据表的名称,
--空间所在列的名称,
--空间数据表(图层)的维度信息,
--参考坐标系索引。
--其中图层维度信息包含2~4条记录,记录的各列含义如下:
--维度名称('X','Y'或'Z')
--最小值(NUMBER)
--最大值(NUMBER)
--容差(NUMBER)
INSERTINTOUSER_SDO_GEOM_METADATA
VALUES(
'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、删除元数据。
--删除表
DROPTABLETEST_GEOM;
--删除元数据
DELETEFROMUSER_SDO_GEOM_METADATA
WHERETABLE_NAME='TEST_GEOM'
ANDCOLUMN_NAME='GEOM';