探讨煤炭企业中ORACLE数据库的应用
2015-03-26天地常州自动化股份有限公司刘建庆
天地(常州)自动化股份有限公司 刘建庆
ORACLE数据库全称为Or acl e Dat abase,是甲骨文公司开发的一种关系数据库管理系统,该技术在整个数据库领域一直处于领先水平,是国内外应用广泛的数据库管理系统。ORACLE数据库属于一种大型数据库产品,其以SQL高级结构化查询语言为基础,支持关系模型的数据库,系统操作方便,可移动性好,功能强,可在各种大、中、小以及微机环境中运行,不仅可以支持分布式客户/服务器应用、集中式结构,同时也具有分布式处理功能,可分布到多个平台上运行。ORACLE数据库被认为是世界上流行的一种高效、可靠以及科研适应高吞吐量的数据库管理系统。下面对ORACLE数据库在煤炭企业中的主要应用操心进行探讨。
1 ORACLE数据库中Sql plus工具的应用
ORACLE数据库具有强大的数据检索功能,用户利用ORACLE数据库可以快速的进行数据检索,准确找到自己所需要的数据。而且ORACLE数据库还具有较强的数据管理功能,可以有效保证数据的一致性、完整性以及数据信息的安全性。在煤炭其他的各个部门中数据量类型多,数量大,而且数据关系复杂,要进行数据分析和数据处理就需要借助Sql pl us工具,通过各种命令和函数的应用来实现数据操作。下面介绍ORACLE数据库中表连接查询、数据删除、查找以及相关函数的具体应用。
1.1 表连接查询
ORACLE数据库中表连接查询常用到的查询方法和命令是:
sql>select zd1,zd2,zd3,zd4 from表1 where表1.zd1 not in(select zd1 from表2);
因为NOT IN运算符的逻辑测试速度是相当慢的,所以当所查询的表1和表2中的数据记录较多,甚至有上千条、上万条记录时,仍采用才命令进行数据查询就需要较长的时间才能完成。因此需要对NOT IN运算符进行替换,采用外链接进行查询,如此可大大缩短查询时间,即使在数据记录较多的情况下也比较方便。
1.2 数据删除
如果需要将表1和表2中相同的数据记录删除,可以采用命令:
SQL>delete from a where exists (select*from b where a.zd1=b.zd1 and b.zd2=zd2);
SQL>delete from a where(zd1,zd2) in (select zd1,zd2 from b);
当表中的数据量不大的情况下可以采用in子句命令,如果表中的数据量较大,且多至数十万条时采用in字句命令时速度回特别慢,所以此时有必要采用sel ect 子句命令。
1.3 数据查找
在ORACLE数据库的应用中经常会遇到查找多个表中不同的数据记录,例如查找表1有,但表2中没有的数据记录,此时在选择查找命令时需考虑的到速度问题,通过对子句in命令和sel ect子句命令的比较,通常选择以下命令比较理想:
SQL>select zd1 from a where not exists(select zd1 from b where a.zd1=b.zd1);
1.4 函数的应用
在ORACLE数据库的应用中,如果一个表中某一行的某列没有值,便称其为NULL(空值)。NOLL通常用来表示实际值未知或者无意义的情况。对于ORACLE数据库中任意一种类型的列,只有没有使用NOT NULL(非空)或者主键完整性受限,都允许存在空值。如果用户在实际应用操作中忽略了空值,很可能会导致不必要的麻烦。例如在20个表的数据记录中,累计记录为200,处于NULL值状态的为10个,如果使用函数avg()来运算,因为分母中不包含NULL值,所以结果是20。
采用nv1()函数可以解决ORACLE数据库中存在NULL值的任何类型的数据计算。命令格式为nv1(数值型字段名,0)。nv1()函数用0来表示字段中可能产生的NULL值。例如:
SQL>up d ate表名set zd 1=nv 1(zd 2,0)+nv 1(zd3,0)+nv1(zd4,0)
nv1()函数在ORACLE数据库中的应用可以有效避免因为NULL值存在导致的计算错误,这是在实际应用中必须要注意的一点。
2 ORACLE格式向foxpro/dbase格式转换
ORACLE数据库的应用过程中有时候为了完成应用要求需要将数据库格式转换为其他格式,例如foxpro格式或者dbase格式等等。下面简单介绍ORACLE数据库转换为foxpro/dbase格式的方法。首先利用Sql plus工具提取ORACLE数据库的信息数据,然后利用命令spool(重定向命令)将提取出来的数据保存在一个文本格式(temp.txt)的文件中。最后再编辑一个sql文件来运行就可以实现。Sql文件的编辑例子:
sql> @文件名:
此文件主体内容为:
spool c:/usxer/temp.txt
select zd1,zd2,zd3,zd4 from表where条件子句;
spool off
然后利用exce1软件将所生成的文件打开,根据文本导入向导提示把先前的文本格式(temp.txt)文件转化为exce1格式文件(temp.xls)。最后利用Foxpro的导入功能将exce1格式文件(temp.xls)打开,并将其转换为数据库文件(temp.dbf)。在数据库格式的转换过程中,如果将中间exce1格式的转换非常重要,如果将这一转换步骤省去极易造成数据转换不完整的情况。ORACLE数据库格式向Dbase格式转换可以先在Dbase状态下建立一个结构与Oracle相同的数据库,将此数据库打开后再利用appe from temp sdf命令进行处理即可实现格式转换。
3 Foxpro/dbf格式向Oracle格式转换
ORACLE数据库自身提供有一个功能强大的管理器(oracle enterprise mananger),其中的数据管理项可以将数据库以外的数据(例如dbf/Foxpro格式数据)导入到ORACLE数据库中,然后利用SQL*Loader处理即可。
Foxpro格式转换为Oracle格式首先需要将数据导出Foxpro数据库,执行操作“打开file/export, 选择delimited text,在to项中给出需要导出数据库的数据文件名,在fro项选择要导出的文件,并选择文件存储位置”。将Options对话框各项设置完成后点击“OK”即可将文件导出。然后将数据文件编辑为控制文件格式,再将数据上传到数据库服务器即可。如果Foxpro的memo字段文件需要进行格式转换首先要利用copy memo命令将文件导出到文本,然后再执行上述转换操作。
dbf格式向Oracle格式转换首先需要创建一个相同结构的oracle table,将dbase数据
通过copy to文件名sdf命令转换为源文件格式,然后编辑一个控制文件(.ctl)来定义源文件的路径、目标表文件名等属性。下面给出控制文件(.ctl)的源程序(fe0.ctl):
-options(errors=200,rows=1320)
-continue_load data
load data
infi le”a:/temp.txt”
into table tem
append
(dhhm position(41:47)char,
hfny constant′200011′
chf position(48:58)decimal external nullif chf=
blanks,
shf position(59:69)decimal external nullif shf=
blanks,
nhf position(70:79)decimal external nullif nhf
=blanks
上述操作完成之后启动ORACLE数据库的功能管理器,并在数据管理项中的(装载)load项中定义控制文件名和log文件。装载过程中如果出现无法完成装载的异常数据均会被保存在特定的文件中,如果数据装载失败就可以查阅文件并查找问题所在。
4 结论
以上是对煤炭企业中ORACLE数据库的主要应用操作进行探讨。ORACLE数据库数据库是一个高性能的大型关系数据库,所以用来支持ORACLE数据库正常运行的后台系统规模也比较庞大。ORACLE数据库设计和编码完成之后投入使用就很难进行重新设计和编码,所以ORACLE数据库在使用之前需要明确掌握数据库的应用,进行准确定位。
[1]崔燕.Oracle数据库的应用[J].中外企业家,2015(15):176-176.
[2]李璐璐.Oracle数据库优化方法分析[J].硅谷,2014(24):31-32.
[3]初宗荣.Oracle数据库应用中存在的问题及优化策略[J].网络安全技术与应用,2014(3):11-12.
[4]郭宇.大数据时代下Oracle数据库在汽车制造业MIS系统中的应用[J].计算机光盘软件与应用,2015(1):169-170.
[5]郭凤清.探讨oracle数据库日常维护与优化[J].科技风,2014(24):120-120.
[6]张增阳.关于Oracle数据库基础设计与优化设计的研究[J].信息系统工程,2013(1):41,54.
[7]涂云杰.Oracle数据库技术在煤矿安全监控中的应用[J].煤炭技术,2013(5):71-73.
[8]Oracle数据库在煤炭企业中的应用[J].信息技术,2001(5).