当前位置:文档之家› 空间数据库实习报告

空间数据库实习报告

空间数据库实习报告
空间数据库实习报告

课程编号: 课程性质:必修

空间数据库课程设计与实习

实习报告

学院: 测绘学院

专业: 测绘工程

地点: 三校区院一楼机房

班级: 测绘工程3班

组号:

姓名:

学号: 2014301610***

教师:

2017年8月28日至 2017年9月4日

第1 章空间数据库准备操作 (1)

1.1实习目的 (1)

1.2作业内容 (1)

1.3创建用户操作 (1)

1.3.1给用户授权,管理数据库所用权限 (1)

1.4数据库准备操作 (2)

1.4.1登录退出 (2)

1.4.2监听 (2)

1.5文件导出操作 (2)

1.5.1导出成功显示 (3)

第2 章空间数据库建库 (3)

2.1数据库建库及插入数据 (3)

2.2数据库建表emp (3)

2.3数据库常用操作 (4)

2.3.1数据库插入一条数据 (4)

2.3.2创建表emp_new (4)

2.3.3展示两个表异同 (4)

2.3.4表的操作,增加数据列 (5)

2.3.5删除主键 (5)

2.3.6创建插入数据 (5)

2.3.7查询表emp_new的删除效果 (6)

2.3.8将一个表数据批量加载到另一个表 (6)

2.3.9更新表 (7)

2.3.10删除操作 (7)

第3 章ORACLE SPATIAL空间数据库建立 (7)

3.1了解熟悉熟悉SDO_GEOMETRY (7)

3.1.1新建CHN_CITIES表 (7)

3.1.2完成元数据及空间索引的建立 (8)

3.1.3创建空间索引 (8)

3.2 orcacle spatial 空间数据的操作 (8)

3.2.1空间数据的插入 (8)

3.2.2检查数据 (8)

3.2.3空间数据库简单查询 (8)

3.2.4查看其它公路号码 (9)

3.3空间数据加载 (9)

3.3.1导入新数据 (9)

3.3.2实现基础的SQLLDR文件导入功能 (10)

3.3.3测试加载非固定长度数据 (10)

3.3.4限定符自由格式数据使用 (11)

3.3.5加载组合的物理数据 (13)

第4 章II号宗地的建库查询 (14)

4.1作业目标:找到2号宗地中所有点的信息(按点号排序) (14)

4.2建立空间数据库 (14)

4.2.1建立与插入 (14)

第5 章运行过程生成表截图介绍 (20)

5.1 ZIL表 (20)

5.2 点查询表 (20)

5.3找到2号宗地中所有点的信息(按点号排序) (20)

5.4 Dept emp 表 (21)

第 1 章 空间数据库准备操作

1.1 实习目的

熟悉Oracle 数据库的基本操作,回顾空间数据库的相关知识

Oracle Spatial 是Oracle 公司推出的空间数据库组件,它通过Oracle 数据库系统存储和管理空间数据,为Oracle 数据库新增加了空间类型和多项空间查询功能。 在了解的基础上独立完成II 号宗地的建库和查询操作。

1.2 作业内容

1.3 创建用户操作

1. SQL> create user zhangyan identified by 123

2. 2 default tablespace users

3. 3 temporary tablespace temp

4. 4 profile default

5. 5 ;

6. 用户已创建。

1.3.1 给用户授权,管理数据库所用权限

1. SQL> grant connect ,resource to zhangyan;

2. 授权成功。

3. SQL> grant create any table to zhangyan;

4.授权成功。

5.SQL> grant alter any table to zhangyan;

6.授权成功。

7.SQL> grant drop any table to zhangyan;

8.授权成功。

9.SQL> grant insert any table to zhangyan;

10.授权成功。

11.SQL> alter user zhangyan quota unlimited on users;

用户已更改。

*说明:在SYS用户下授予新用户权限及自定义表空间权限

1.4 数据库准备操作

1.4.1 登录退出

SQL> exit

从Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options 断开1.4.2 监听

C:\Users\Administrator>lsnrctl status

*展示监听情况

C:\Users\Administrator>lsnrctl start

*打开监听

*说明:在启动监听前要修改监听,对应相应点到的PC号码

LSNRCTL for 64-bit Windows: Version 11.2.0.1.0 - Production on 01-9月-2017 09:27:04

Copyright (c) 1991, 2010, Oracle. All rights reserved.

TNS-01106: 使用名称LISTENER的监听程序已经启动

1.5 文件导出操作

C:\Users\Administrator>imp zhangyan/123@orcl file=c:\test\map_detailed.dmp fromuser=spatial touser=qwb

C:\Users\Administrator>imp zhangyan/123@orcl file=c:\test\map_large.dmp fromuser=spatial touser=qwb

C:\Users\Administrator>imp zhangyan/123@orcl file=c:\test\app_with_loc.dmp fromuser=spatial touser=qwb

1.5.1 导出成功显示

在出现如下显示时说明数据已经成功导入了。

Import: Release 11.2.0.3.0 - Production on 星期一8月28 10:36:32 2017 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

连接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options

经由常规路径由EXPORT:V10.01.00 创建的导出文件

警告: 这些对象由SPA TIAL 导出, 而不是当前用户

已经完成ZHS16GBK 字符集和AL16UTF16 NCHAR 字符集中的导入

导出客户机使用WE8MSWIN1252 字符集(可能的字符集转换)

. 正在将SPATIAL 的对象导入到QWB

. . 正在导入表"CUSTOMERS"导入了3195 行

. . 正在导入表"BRANCHES"导入了77 行

. . 正在导入表"COMPETITORS"导入了562 行

成功终止导入, 没有出现警告。

第 2 章空间数据库建库

2.1 数据库建库及插入数据

2.2 数据库建表emp

1.SQL> create table emp(empno number(4),ename varchar2(10),job varchar2(9),m

gr number(4),hiredate DATE,sal number(7,2),comm number(7,2),deptno number(

2));

2.表已创建。

3.SQL> alter table emp modify(empno not null);

4.表已更改。

*说明:上面这句话是使用alter语句让表的empno这个列不能为空

2.3 数据库常用操作

2.3.1 数据库插入一条数据

SQL> insert into empvalues(0001,'ZhangShan','clerk',0001,to_date('2017-8-28','y

yyy-mm-dd'),111.11,111.11,01);

已创建1 行。

2.3.2 创建表emp_new

SQL> create table emp_new as select*from emp where 1=2;

表已创建。

*说明:这是采用利用AS函数的建表方式

2.3.3 展示两个表异同

SQL> describe emp_new

1.SQL> describe emp_new

2.名称是否为空? 类型

3.----------------------------------------- -------- ----------------------

------

4. EMPNO NOT NULL NUMBER(4)

5. ENAME VARCHAR2(10)

6. JOB VARCHAR2(9)

7. MGR NUMBER(4)

8. HIREDATE DATE

9. SAL NUMBER(7,2)

10. COMM NUMBER(7,2)

11. DEPTNO NUMBER(2)

12.SQL> describe emp;

13.名称是否为空? 类型

14.----------------------------------------- -------- ----------------------

------

15.

16. EMPNO NOT NULL NUMBER(4)

17. ENAME VARCHAR2(10)

18. JOB VARCHAR2(9)

19. MGR NUMBER(4)

20. HIREDATE DATE

21. SAL NUMBER(7,2)

22. COMM NUMBER(7,2)

23. DEPTNO NUMBER(2)

2.3.4 表的操作,增加数据列

SQL> alter table emp_newadd(countsal number(4));

表已更改。

*说明:为emp_new表增加新数列

SQL> describe emp_new

1.SQL> describe emp_new

2.名称是否为空? 类型

3.----------------------------------------- -------- ----------------------

------

4.

5. EMPNO NOT NULL NUMBER(4)

6. ENAME VARCHAR2(10)

7. JOB VARCHAR2(9)

8. MGR NUMBER(4)

9. HIREDATE DATE

10. SAL NUMBER(7,2)

11. COMM NUMBER(7,2)

12. DEPTNO NUMBER(2)

13. COUNTSAL NUMBER(4)

设置主键

SQL> alter table emp_newadd(constraint pk_empno primary key (empno));

表已更改。

*说明:将empno设置为主键

2.3.5 删除主键

SQL> alter table emp_new drop primary key;

表已更改。

2.3.6 创建插入数据

SQL> create table emp_new as select*from emp where 1=1;

表已创建。

SQL> select empno from emp_new;

1.SQL> select empno from emp_new;

2. EMPNO

3.----------

4. 1

5.

6.SQL> insert into emp values(0001,'ZhangShan','clerk',0001,to_date('2017-8-

28','y

7.yyy-mm-dd'),111.11,111.11,01);

8.已创建 1 行。

9.SQL> insert into emp values(0003,'WangWu','clerk',0001,to_date('2017-8-28'

,'yyyy

10.-mm-dd'),111.11,111.11,01);

11.已创建 1 行。

12.SQL> insert into emp values(0004,'ZhaoLiu','clerk',0001,to_date('2017-8-28

','yyy

13.y-mm-dd'),111.11,111.11,01);

14.已创建 1 行。

使用truncate命令,删除表emp_new

SQL> truncate table emp_new;

表被截断。

2.3.7 查询表emp_new的删除效果

SQL> select*from emp_new;

未选定行

2.3.8 将一个表数据批量加载到另一个表

SQL> insert into emp_new(empno,ename,job,mgr,hiredate,sal,comm,deptno)

2 selectempno,ename,job,mgr,hiredate,sal,comm,deptno

3 fromemp;

已创建5 行。

*说明:insert命令,向表emp_new中批量加载数据

SQL> select empno from emp_new;

1. EMPNO

2.----------

3. 7560

4. 1

5. 1

6. 2

7. 3

8. 4

9.已选择6行。

2.3.9 更新表

SQL> update emp_new set ename='chEN' where empno=7560;

已更新1 行。

SQL> select*from emp_new where empno=7560;

1. EMPNO ENAME JOB MGR HIREDATE SAL

COMM

2.---------- ---------- --------- ---------- -------------- ---------- -----

-----

3. DEPTNO

4.----------

5. 7560 chEN SALESMAN 29-8月 -17 0

6. 10

2.3.10 删除操作

SQL> delete emp_new where empno=7560;

已删除1 行。

第 3 章ORACLE SPATIAL空间数据库建立

3.1 了解熟悉熟悉SDO_GEOMETRY

3.1.1 新建CHN_CITIES表

1.SQL> create table chn_cities

2. 2 (

3. 3 id number not null,

4. 4 city varchar2(42),

5. 5 state_abrv varchar2(2),

6. 6 pop90 number,

7. 7 rank90 number,

8. 8 location mdsys.sdo_geometry

9. 9 );

3.1.2 完成元数据及空间索引的建立

3.1.3 创建空间索引

SQL> create index chnindex_sidx_sidx ON chn_cities(location)

2 INDEXTYPE IS MDSYS.SPATIAL_INDEX;

3.2 orcacle spatial 空间数据的操作

3.2.1 空间数据的插入

1.SQL> insert into chn_cities

2. 2 (id,city,state_abrv,pop90,rank90,location)

3. 3 values

4. 4 (

5. 5 3444,

6. 6 'nanjing',

7. 7 'js',

8. 8 9000000,

9. 9 3444,

10. 10 sdo_geometry(2001,8307,sdo_point_type(117.33,33.69,null),null,null

));

3.2.2 检查数据

SQL> select city from chn_cities;

3.2.3 空间数据库简单查询

(1)查询在I795公路上最近的5个餐馆

SQL> SELECT poi_name

2 FROM

3 (

4 SELECT poi_name,

5 SDO_GEOM.SDO_DISTANCE(P.location, I.geom, 0.5)distance

6 FROM us_interstatesI,us_restaurants P

7 WHERE I.interstate='I795'

8 ORDER BY distance

9 )

10 WHERE ROWNUM <= 5;

(2)删除原有空间索引

SQL> drop index us_restaurants_sidx;

索引已删除。

(3)新建空间索引

SQL> create index us_restaurants_sidx on us_restaurants(location) 2 indextype is mdsys.spatial_index;

索引已创建。

(4)使用sdo_in函数查询I795最近的5家餐馆

SQL> SELECT poi_name

2 FROM us_interstatesI,us_restaurants P

3 WHERE I.interstate='I795'

4 AND SDO_NN(P.location,I.geom)='TRUE'

5 AND ROWNUM <=5;

3.2.4 查看其它公路号码

SQL> select interstate from us_interstates;

3.3 空间数据加载

3.3.1 导入新数据

(1)新建测试用户

SQL> create table DEPT_LRD as select * from dept where 1=2; SQL> alter table DEPT_LRD modify (deptno not null);

(2)创建新表

SQL> create table zjl(

2 name varchar(10),

3 birth varchar(10),

4 spec varchar(50),

5 part varchar(80));

3.3.2 实现基础的SQLLDR文件导入功能

(1)编写ZJL.CTL测试文件,内容如下:

load data

infile zjl.txt

append

into table zjl

(name position(01:08) char,

birth position(09:18) char,

spec position(19:48)char,

part position(49:108) char)

(2)读取控制文件并导入数据文件

C:\Users\Administrator>sqlldr qwb/qwb123 control=c:\test\zjl.ctl log=c:\test\zjl.log bad=c:\test\zjl.bad

(3)查看日志文件

SQL> select * from zjl;

3.3.3 测试加载非固定长度数据

(1)创建ULCASE1.CTL控制文件,内容如下:

1.LOAD DATA

2.INFILE *

3.INTO TABLE dept_lrd

4.FIELDS TERMINATED BY',' OPTIONALLY ENCLOSED BY'"'

5.(deptno,dname,loc)

6.BEGINDATA

7.12,RESEARCH,"SARATOGA"

8.10,"ACCOUNTING",CLEVELAND

9.11,"ART",SALEM

10.13,FINANCE,"BOSTON"

11.21,"SALES",PHILA.

12.22,"SALES",ROCHESTER

13.42,"INT'L","SAN FRAN"

(2)执行控制文件,并查询文件导入效果。

C:\Users\Administrator>sqlldr zhangyan\123 control=c:\test\ULCASE1.ctl log=c:\test \ULCASE1.log

SQL*Loader: Release 11.2.0.3.0 - Production on 星期三8月30 16:25:38 2017 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

达到提交点- 逻辑记录计数 6

达到提交点- 逻辑记录计数7

SQL> select * from dept_lrd;

3.3.4 限定符自由格式数据使用

(1)为EMP_LRD表添加数据。

1.SQL> insert into emp_lrd(empno,ename,job,mgr,hiredate,sal,comm,deptno)

2. 2 select a.empno,a.ename,a.job,a.mgr,a.hiredate,a.sal,https://www.doczj.com/doc/8315599118.html,m,a.dept

no

3. 3 from emp a;

(2)为EMP_LRD表添加数据字段PROJNO/DOADSEQ.

SQL> alter table emp_lrd add (PROJNO NUMBER,LOADSEQ NUMBER);

1.SQL> describe emp_lrd

2.名称是否为空? 类型

3.----------------------------------------- -------- ----------------------

------

4.

5. EMPNO NOT NULL NUMBER(4)

6. ENAME VARCHAR2(10)

7. JOB VARCHAR2(9)

8. MGR NUMBER(4)

9. HIREDATE DATE

10. SAL NUMBER(7,2)

11. COMM NUMBER(7,2)

12. DEPTNO NUMBER(2)

13. PROJNO NUMBER

14. LOADSEQ NUMBER

(3)编写控制文件:

1.LOAD DATA

2.INFILE *

3.APPEND

4.INTO TABLE emp_lrd

5.FIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"'

6.(empno, ename, job, mgr,

7.hiredate DATE(20)"YYYY-mm-DD",

8.sal, comm, deptno CHAR TERMINATED BY':',

9.projno,

10.loadseq SEQUENCE(MAX,1))

11.BEGINDATA

12.7782,"Clark","Manager",7839,1981-07-09,2572.50,,10:101

13.7839,"King","President",,1981-11-17,5500.00,,10:102

14.7934,"Miller","Clerk",7782,1982-01-23,920.00,,10:102

(4)执行控制文件,并查看结果

1.C:\Users\Administrator>sqlldr zhangyan /123 control=c:\test\ULCASE

2.ctl lo

g=c:\test

2.\ULCASE2.log

3.

4.SQL*Loader: Release 11.2.0.3.0 - Production on星期三 8

月 30 16:40:09 2017

5.

6.Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserv

ed.

7.

8.达到提交点 - 逻辑记录计数 2

9.达到提交点 - 逻辑记录计数 3

10.SQL> select * from emp_lrd;

11.

12. EMPNO ENAME JOB MGR HIREDATE SAL

COMM

13.---------- ---------- --------- ---------- -------------- ---------- -----

-----

14. DEPTNO PROJNO LOADSEQ

15.---------- ---------- ----------

16. 7560 WANG SALESMAN 28-8月 -17 0

17. 10

18.

19. 7589 QIU BOSS 28-8月 -17 0

20. 10

21.

22. 7561 ZHANG BOSS 28-8月 -17 0

23. 10

3.3.5 加载组合的物理数据

(1)制作控制文件:

1.code:

2.LOAD DATA

3.INFILE 'ulcase3.dat'

4.DISCARDFILE 'ulcase3.dsc'

5.DISCARDMAX 999

6.REPLACE

7.CONTINUEIF THIS (1) = '*'

8.INTO TABLE emp_lrd

9.(empno POSITION(1:4) INTEGER EXTERNAL,

10.ename POSITION(6:15) CHAR,

11.job POSITION(17:25) CHAR,

12.mgr POSITION(27:30) INTEGER EXTERNAL,

13.sal POSITION(32:39) DOUBLE,

https://www.doczj.com/doc/8315599118.html,m POSITION(41:48) DECIMAL EXTERNAL,

15.deptno POSITION(50:51) INTEGER EXTERNAL,

16.hiredate POSITION(52:60) DATE(10)'YYYY-mm-DD')

(2)制作数据文件:

1.code:

2.*7782 CLARK

3.MANAGER 7839 2572.50 -10 251985-11-12

4.*7839 KING

5.PRESIDENT 5500.00 251983-04-05

6.*7934 MILLER

7.CLERK 7782 920.00 251980-05-08

8.*7566 JONES

9.MANAGER 7839 3123.75 251985-07-17

10.*7499 ALLEN

11.SALESMAN 7698 1600.00 300.00 251984-06-03

12.*7654 MARTIN

13.SALESMAN 7698 1312.50 1400.00 251985-12-21

14.*7658 CHAN

15.ANALYST 7566 3450.00 251984-02-16

16.* CHEN

17.ANALYST 7566 3450.00 251984-02-16

18.*7658 CHIN

19.ANALYST 7566 3450.00 251984-02-16

(3)执行控制文件

C:\Users\Administrator>sqlldr qwb/qwb123 control=c:\test\ULCASE3.ctl log=c:\test \ULCASE3.log

第 4 章II号宗地的建库查询

4.1 作业目标:找到2号宗地中所有点的信息(按点号排序)

4.2 建立空间数据库

4.2.1 建立与插入

基于普通数据库操作方式使用create 创建几何体表使用insert插入数据

1.code:

2.SQL> create table Dot

3. 2 (DID number(1),

4. 3 DNAME varchar2(5),

5. 4 DX number(3,1),

6. 5 DY number(3,1)

7. 6 );

8.表已创建。

9.SQL> insert into Dot values(1,'1',0.1,1.1);

10.已创建 1 行。

11.SQL> insert into Dot values(2,'2',2.1,1.1);

12.已创建 1 行。

13.SQL> insert into Dot values(3,'3',2.1,3.1);

14.已创建 1 行。

15.SQL> insert into Dot values(4,'4',0.1,3.1);

16.已创建 1 行。

17.SQL> insert into Dot values(5,'5',4.1,4.1);

18.已创建 1 行。

19.SQL> insert into Dot values(6,'6',5.1,2.1);

20.已创建 1 行。

21.SQL> insert into Dot values(7,'7',4.1,0.1);

22.已创建 1 行。

1.code:

2.SQL> create table Line

3. 2 (LID number,

4. 3 LNAME varchar2(5)

5. 4 );

6.

7.表已创建。

8.

9.

10.SQL> insert into Line (LID,LNAME)

11. 2 select 1,'1'from dual union all

12. 3 select 2,'2'from dual union all

13. 4 select 3,'3'from dual union all

14. 5 select 4,'4'from dual union all

15. 6 select 5,'5'from dual union all

16. 7 select 6,'6'from dual union all

17. 8 select 7,'7'from dual union all

18. 9 select 8,'8'from dual;

19.

20.已创建 8 行。

21.

22.SQL> create table Poly

23. 2 (

24. 3 PolyID number,

25. 4 PolyNAME varchar2(5)

26. 5 );

27.

28.表已创建。

29.

30.

31.

32.SQL> insert into Poly (PolyID,PolyNAME)

33. 2 select 1,'A'from dual union all

34. 3 select 2,'B 'from dual;

35.

36.已创建 2 行。

37.

38.SQL> create table Zd

39. 2 (

40. 3 ZdID number,

41. 4 ZdNAME varchar2(5)

42. 5 );

43.

44.表已创建。

45.

46.SQL> insert into Zd values(1,'一');

47.

48.已创建 1 行。

49.

50.SQL> insert into Zd values(2,'二');

51.

52.已创建 1 行。

53.

54.SQL> create table DotLine

55. 2 (

56. 3 LineID number,

57. 4 DotID number,

58. 5 isstart varchar2(5)

59. 6 );

60.

61.表已创建。

62.

63.

64.SQL> insert into Dotline (LineID,DotID,isstart)

65. 2 select 1,3,'n'from dual union all

66. 3 select 1,4,'y'from dual union all

67. 4 select 2,3,'y'from dual union all

68. 5 select 2,2,'n'from dual union all

69. 6 select 3,2,'y'from dual union all

70. 7 select 3,1,'n'from dual union all

71. 8 select 4,1,'y'from dual union all

72. 9 select 4,4,'n'from dual union all

73. 10 select 5,3,'y'from dual union all

74. 11 select 5,5,'n'from dual union all

75. 12 select 6,5,'y'from dual union all

76. 13 select 6,6,'n'from dual union all

77. 14 select 7,6,'y'from dual union all

78. 15 select 7,7,'n'from dual union all

79. 16 select 8,7,'y'from dual union all

80. 17 select 8,2,'n'from dual;

81.

82.已创建 16 行。

83.

84.SQL> create table LinePoly

85. 2 (PolyID number,

86. 3 LineID number,

87. 4 isLIGHT varchar2(5)

88. 5 );

89.

90.表已创建。

91.

92.SQL> insert into LinePoly(PolyID,LineID,isLIGHT)

93. 2 select 1,1,'n'from dual union all

94. 3 select 1,2,'n'from dual union all

95. 4 select 1,3,'n'from dual union all

96. 5 select 1,4,'n'from dual union all

97. 6 select 2,2,'y'from dual union all

98. 7 select 2,5,'n'from dual union all

99. 8 select 2,6,'n'from dual union all

100. 9 select 2,7,'n'from dual union all

101. 10 select 2,8,'n'from dual;

102.

103.已创建 9 行。

104.

105.SQL> create table PolyZd

106. 2 (ZdID number,

107. 3 PolyID number,

108. 4 isWAI varchar2(5)

109. 5 );

110.

111.表已创建。

112.

113.SQL> insert into PolyZd (ZdID,PolyID,isWAI) 114. 2 select 1,1,'n'from dual union all

115. 3 select 1,2,'y'from dual union all

116. 4 select 2,1,'y'from dual union all

117. 5 select 2,2,'n'from dual;

118.

119.已创建 4 行。

120.

121.SQL> select DID,DX,DY

122. 2 from Dot

123. 3 where DID in

124. 4 (

125. 5 select DotID

126. 6 from DotLine

127. 7 where LineID in

128. 8 (

129. 9 select LineID

相关主题
文本预览
相关文档 最新文档