软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件开发专栏>>数据库>>正文
大中型数据库数据导入中存在的部分问题及对策
文章出处:cnaudit 作者:不详 发布时间:2006-01-16
  随着计算机审计技术的不断发展,数据导入技术的水平已跃上一个新的台阶,体现出快速、高效和通用的特点。但是伴随审计对象的数据库系统趋于集中性、大型性和异构性,在一些实际工作中,已有的数据导入软件并不能完全有效的导入数据,本文针对一些数据导入过程中存在的问题进行分析并提出处理的方法。

  一. 利用数据库特定数据导出工具

  (1)审计背景

  审计署南京办在对某省农村卫生资金的调查中,在审计准备阶段,针对特定的审计目标,选取对审计实施过程中有用的数据表,来方便审计实施过程中数据的处理和分析。被审计单位的数据后台环境是windows版本的oracle,前台是用友8.0,数据量中等,由于所使用的审计数据采集软件没有对应用友8.0的接口,并且客观上也不允许直接连上后台数据库采集数据,因此我们只能使用数据库特定数据导出工具。

  (2)采集的过程与使用的技术方法

  为了减少数据采集过程中对被审计对象系统产生的风险,我们使用了oracle中的spool缓冲池技术,这种技术可以实现直接从后台数据库导出数据,导出数据的格式为文本文件。我们通常按照以下步骤来使用这种技术:

  1. 打开oracle pl/sql窗口,在其中输入缓冲开始命令,并指定处理完输出的路径与文件名。

  2. 在命令行中输入sql查询。

  3. 在命令行中输入缓冲结果命令。

  我们可以参照一个范例来详细介绍如何使用该技术,例如我们要将oracle数据库中customer表中所有的数据导入d盘的customer.txt中,我们可以采取以下步骤来实现我们的目的。

  1. spool d:customer.txt;

  2. select * from customer;

  3. spool off;

  这样系统就将执行查询进入缓冲池中的结果都输出到customer.txt文件中,文件的列分隔符为tab键,行分隔符为回车换行,然后我们使用审计数据采集软件中已成熟的文本文件导入工具可以很方便的导入customer.txt中的数据。

  二. 自力更生开发数据清洗工具

  (1)审计背景

  审计署南京办在对某商业银行审计中,在审计准备阶段,针对特定的审计目标,分析银行数据的特点,选取对审计实施过程中有用的字段,方便审计实施过程中数据的处理和分析。面对银行的大容量数据,审计组决定将该银行自行开发的cms信贷管理信息系统和abis信息系统的后台数据,导入sql server数据库进行整理和分析。

  (2)出现的问题

  该商业银行根据上级要求提供了txt格式的winrar压缩数据文件,审计组在本地机上进行了解压缩,然后导入sql server数据库,在导入过程中,由于该商业银行所使用的数据库有两套,分别是sybase和db2,相对应的操作系统是aix和as400,机器架构都不是x86的,所以提供的数据文件格式和分隔符都存在不规范的现象,给实际导入工作带来了不小的难度。

  我们通常采用dts和使用dts技术的衍生工具来导入数据。dts作为一个将文本文件高速装载进sql server数据库中的工具,提供了一种图形化的数据导入方式。但是我们发现在本次数据导入过程中,当以双引号为文本限定符,以逗号作为列分隔符,以回车换行作为行分隔符时,某些大文本数据格式中有多余的换行或双引号等字符,致使导入数据格式不正确,数据会在导入过程中出错,一些出错的情况如下图所示:图1至图4是一些出错的原因,图5与图6是导入数据过程中dts产生的错误。

图1 出现不合规双引号

图2出现不合规换行符

图3出现不合规换页符

图4出现不合规文本结束符

图5 格式不正确

图6 导入失败

  (3)处理方法

  由于导入数据记录数量很大,其中出错情况分布没有规律并且数目也很多,如果采取手工替换的方式会极大的浪费人力和时间,因此审计人员决定根据该银行的数据特征,开发出适合该银行数据特征的数据清洗工具abcdct。下面我们分步骤讨论开发设计思路:

  1. 指定源文件,并选取目标文件。

  2. 预读文件,确定一行记录中各文本限定符(即双引号)的具体位置,写入位置数组,确定每行记录的总字符数。

  3. 从源文件中读取一行字符串,程序扫描该字符串,如果发现有双引号不在位置数组中,则该双引号为非法的双引号,替换该双引号,并清除不合要求的字符,即回车符(0x0d)、换行符(0x0a)、分页符(0x0c)、制表符(0x09)和文本结束字符(0x00),我们采取的可行办法是将这些非法的字符用空格(0x20)来代替。

  4. 将清洗完的字符串写入目标文件。

  软件设计流程图如下:

图7 流程图

  (4)软件运行界面

  软件运行时的界面与显示结果的界面如下图所示。

图8 运行界面图

图9 运行结果图

  (5)结论

  审计人员通过使用abcdct只花费了两周就完成了以往手工纠错需一个多月时间完成的任务,极大的提高了工作效率。但是在使用的过程中也发现存在一些不足:通用性不够,只能清洗以双引号为文本限定符,以逗号作为列分隔符,以回车换行作为行分隔符的文本文件;没有使用多线程技术提升清洗的效率;由于设计时假定分隔符的位置是固定的,因此对字段不定长的文本不能适用,这就需要在以上方面对软件做进一步的改进。

  综上所述,针对不同的审计数据环境,我们采用了两种方法来完成数据导入的任务,一种是利用已有的几种技术结合起来的方法,一种是根据客观实际的需要来自主解决的方法。我们可以看到,由于各部门信息化的程度和实施角度的差异,导致了数据环境也千变万化,存储方式的不同,平台的异构性,数据库系统的差异,多种多样,指望借助一种通用的方法来解决所有的数据导入问题是行不通的,就需要我们根据审计对象数据特点,因地制宜的解决数据导入问题。


站内搜索
相关文章
◎ORACLE 常用脚本(4)
◎ORACLE 常用脚本(3)
◎ORACLE 常用脚本(2)
◎ORACLE 常用脚本(1)
◎ORACLE性能调优原则
◎oracle中关于null排序的问题
◎mysql数据库优化
◎把Access数据库移植到SQL
◎如何把Access的数据导入到Mysql
◎数据库设计三大范式应用实例剖析
◎SQL Server 2000 JDBC驱动的完整安装及测试说明
◎论数据库技术的发展史
◎MySQL索引分析和优化
◎检测和解决 SQL Server 2000 SP 4 中的延迟和阻塞 I/O 问题
◎几大数据仓库方案特性比较
◎SQL语句导入导出大全
◎从SQL Server 向Oracle 8迁移的技术实现方案
◎SQL Server连接中三个常见的错误分析
◎数据库性能分析及调整一例
◎手动建立Oracle9i数据库
◎如何连接SQL Server与Oracle数据库
◎利用 DBCA 建立 Oracle9i 数据库
◎Oracle9i 数据库实体结构
◎如何安装Oracle 9i Enterprise Edition for Linux
◎DB2数据库的安装
◎DB2/Sybase/Oracle的比较
热门文章
◎SQL Server 2000 JDBC驱动的完整安装及测试说明
◎ORACLE 常用脚本(3)
◎如何连接SQL Server与Oracle数据库
◎ORACLE 常用脚本(1)
◎管理常用SQL语句
◎SQL语句导入导出大全
◎如何安装Oracle 9i Enterprise Edition for Linux
◎Oracle的入门心得
◎精妙Sql语句
◎手动建立Oracle9i数据库
◎DB2/Sybase/Oracle的比较
◎ORACLE 常用脚本(2)
◎数据库性能分析及调整一例
◎ORACLE 常用脚本(4)
◎数据库设计三大范式应用实例剖析
◎利用 DBCA 建立 Oracle9i 数据库
◎ORACLE性能调优原则
◎SQLServer性能分析参数
◎实例说明sql优化的重要性
◎SQL Server连接中三个常见的错误分析
◎SQL与Oracle、DB2的性能比较
◎几大数据仓库方案特性比较
◎从SQL Server 向Oracle 8迁移的技术实现方案
◎Oracle9i 数据库实体结构
◎SQL Server应用程序中的高级SQL注入
◎论数据库技术的发展史
◎SQL Server 2005——下一代的数据管理和分析软件
◎SQL Server连接中的四个最常见错误
◎数据库设计三大范式应用实例剖析
◎两个SQL Server维护技巧
◎微软工程师讲解 SQL Server 阻塞
◎mysql数据库优化
◎检测和解决 SQL Server 2000 SP 4 中的延迟和阻塞 I/O 问题
◎把Access数据库移植到SQL
◎oracle中关于null排序的问题
◎MySQL数据库函数详解
◎如何把Access的数据导入到Mysql
◎DB2数据库的安装
◎Oracle 操作经验谈
◎MySQL索引分析和优化
◎mysql的备份
◎测试Oracle在不同系统中的IO能力
◎用sp_lock诊断SQL Sever的性能问题
◎MSSQL2005的新功能创建数据库快照
◎oracle9i的安装过程
◎实现ClearQuest数据库(SQL Server2000)迁移

Google提供的广告