论文部分内容阅读
摘要着重介绍目前基于Oracle数据库的陕西气象业务库中在数据统计分析中存在的不规则字符串的问题,并提出了通过自建判断函数的有效办法,解决了统计大量数据中经常出现的错误。
关键词Oracle;气象数据库;异常数据;解决方案
中图分类号S164文献标识码A文章编号0517-6611(2014)04-01107-01
作者简介王光营(1980-),男,山东高唐人,工程师,硕士,从事专业气象应用的研究与开发工作。
目前陕西省已建成100个自动气象观测站、1 432个区域观测站和酸雨等特种观测站,这些站点可以连续自动测量温度、湿度、气压、降水等气象要素,观测的数据会及时传输到省局并存入业务数据库中。由于数据量非常大,业务数据库选用的是性能强大的Oracle数据库,但由于自动站数据也会发来一些异常的数据,致使在使用SQL语句进行统计分析数据的时候常被这样问题困扰。在此,笔者着重介绍Oracle数据库陕西气象业务库在使用时存在的异常数据问题,并提出了解决方案,以提高工作效率和质量,保证系统的正常运转。
1 基于ORACLE的气象业务数据库系统概述
Oracle数据库是一种大型数据库系统,一般应用于商业、政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也广泛应用。Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,其在管理信息系统、企业数据处理、因特网及电子商务等领域有非常广泛的应用。ORACLE数据库具有众多的先进特性,支持多种硬件平台、操作系统和网络平台,提供业界真正的透明应用群集并行处理技术,达到B2级安全标准[1]。
气象数据库系统作为气象信息共享平台的重要管理系统,其体系结构和技术的复杂程度均是前所未有的,需要在集约化和标准化原则下,充分利用成熟的商业数据库技术和大气科学领域的相关技术加以构建。同时,气象数据库系统管理大量的、来自于不同业务轨道、具有不同属性的气象数据,并为业务、科研以及政府、公众等各用户提供快捷方便的数据服务,所有数据资源和应用系统均需要集成在统一的平台框架内且为用户提供全局数据导航和获取接口[2]。气象业务数据特点是数据量大、并发处理量大、时效要求高,同时对数据的安全性有较高的要求。基于业务系统的特点,其他小型数据库较难满足需求,因此,气象数据库采用0RACLE 10g for UNIX。
2 自动站业务数据库中存在的问题
自动气象站是目前气象系统投入运行的自动化业务系统,它能完成气象数据的自动采集、存储、编制报表及资料审核和信息化处理。它可以连续自动测量温度、湿度、气压、降水等气象要素。自动站业务数据库存入的数据是解析自动站数据原始文本文件而入库的,由于自动站数据的缺测以及其他问题造成了数据是以不规则字符串组成的,有的字符是“///”、有的是“-”,还有的是其他一些不可预知字符组成的字符串,这样在对数据值统计和写SQL语句时,容易出现很多的错误,如求雨量的和,用到的sum函数,求温度的平均值用AVG函数,如统计7月份全省自动站总的降水量时用到的SQL语句:select sum(rain) from awsTable where dataTime=’201107’,包含這些函数的SQL语句在执行的时候大多均会报错,因为它遇到了那些不规则的字符串。在SQL Server数据库中,这种问题可以用isnumber()函数进行判断这个数据是否为数字,而在Oracle数据库中没有这样的函数,当遇到异常字符时就会出现如下错误信息:Error Message: ORA-01722 invalid number,即将字符串转换为数字出错了,关键的是Oracle里面没有SQL Server里面的类似函数is_number来判断能否转换为数字。
3 解决方案
用过SQL Server数据库的对isnumber()函数均有一定的了解,这是一个常用的判断输入参数是否为数字的函数。而在Oracle中没有现成的判断是否为数字函数,就需要通过Oracle的自定义函数来实现这个功能。下面来介绍一下如何用3种方法来将其实现[3]。
关键词Oracle;气象数据库;异常数据;解决方案
中图分类号S164文献标识码A文章编号0517-6611(2014)04-01107-01
作者简介王光营(1980-),男,山东高唐人,工程师,硕士,从事专业气象应用的研究与开发工作。
目前陕西省已建成100个自动气象观测站、1 432个区域观测站和酸雨等特种观测站,这些站点可以连续自动测量温度、湿度、气压、降水等气象要素,观测的数据会及时传输到省局并存入业务数据库中。由于数据量非常大,业务数据库选用的是性能强大的Oracle数据库,但由于自动站数据也会发来一些异常的数据,致使在使用SQL语句进行统计分析数据的时候常被这样问题困扰。在此,笔者着重介绍Oracle数据库陕西气象业务库在使用时存在的异常数据问题,并提出了解决方案,以提高工作效率和质量,保证系统的正常运转。
1 基于ORACLE的气象业务数据库系统概述
Oracle数据库是一种大型数据库系统,一般应用于商业、政府部门,它的功能很强大,能够处理大批量的数据,在网络方面也广泛应用。Oracle数据库管理系统是一个以关系型和面向对象为中心管理数据的数据库管理软件系统,其在管理信息系统、企业数据处理、因特网及电子商务等领域有非常广泛的应用。ORACLE数据库具有众多的先进特性,支持多种硬件平台、操作系统和网络平台,提供业界真正的透明应用群集并行处理技术,达到B2级安全标准[1]。
气象数据库系统作为气象信息共享平台的重要管理系统,其体系结构和技术的复杂程度均是前所未有的,需要在集约化和标准化原则下,充分利用成熟的商业数据库技术和大气科学领域的相关技术加以构建。同时,气象数据库系统管理大量的、来自于不同业务轨道、具有不同属性的气象数据,并为业务、科研以及政府、公众等各用户提供快捷方便的数据服务,所有数据资源和应用系统均需要集成在统一的平台框架内且为用户提供全局数据导航和获取接口[2]。气象业务数据特点是数据量大、并发处理量大、时效要求高,同时对数据的安全性有较高的要求。基于业务系统的特点,其他小型数据库较难满足需求,因此,气象数据库采用0RACLE 10g for UNIX。
2 自动站业务数据库中存在的问题
自动气象站是目前气象系统投入运行的自动化业务系统,它能完成气象数据的自动采集、存储、编制报表及资料审核和信息化处理。它可以连续自动测量温度、湿度、气压、降水等气象要素。自动站业务数据库存入的数据是解析自动站数据原始文本文件而入库的,由于自动站数据的缺测以及其他问题造成了数据是以不规则字符串组成的,有的字符是“///”、有的是“-”,还有的是其他一些不可预知字符组成的字符串,这样在对数据值统计和写SQL语句时,容易出现很多的错误,如求雨量的和,用到的sum函数,求温度的平均值用AVG函数,如统计7月份全省自动站总的降水量时用到的SQL语句:select sum(rain) from awsTable where dataTime=’201107’,包含這些函数的SQL语句在执行的时候大多均会报错,因为它遇到了那些不规则的字符串。在SQL Server数据库中,这种问题可以用isnumber()函数进行判断这个数据是否为数字,而在Oracle数据库中没有这样的函数,当遇到异常字符时就会出现如下错误信息:Error Message: ORA-01722 invalid number,即将字符串转换为数字出错了,关键的是Oracle里面没有SQL Server里面的类似函数is_number来判断能否转换为数字。
3 解决方案
用过SQL Server数据库的对isnumber()函数均有一定的了解,这是一个常用的判断输入参数是否为数字的函数。而在Oracle中没有现成的判断是否为数字函数,就需要通过Oracle的自定义函数来实现这个功能。下面来介绍一下如何用3种方法来将其实现[3]。