随着大数据时代的到来,审计工作在处理、分析海量数据时面临着新的挑战。大型数据库动辄包含几百上千张表,审计人员如何在时间和人力有限的情况下,快速分析数据结构,查找需要的关键字段,生成关联中间表,准确高效地确定审计重点,是需要广大审计人员共同思考和解决的问题。笔者在从事财政电子数据分析整理过程中,总结出根据财政信息系统软件前台数据值快速在整个数据库中定位后台储存该值的表和字段的方法,可以帮助审计人员快速自动定位表和字段,有力地提高分析数据结构的效率。 一、方法思路 定位方法是一段SQL存储过程语句。该存储过程的主要思路是匹配审计人员设置值与数据库所有用户表里常见字段类型的值,查找出审计人员设置值的存储位置。具体运行时,首先创建一张新表,然后调用一个内含的游标搜索设置值,最后把搜索到的结果写入新表中。其中,游标的作用是搜索储存了常见字段类型的用户表名称和字段名称。 二、语句内容 create proc frontvalue @value varchar(255) begin set nocount on; declare @sql varchar(255) declare @table varchar(255) declare @column varchar(255) create table newtable( 表名varchar(255), 列名varchar(255) declare ctable cursor for select obj.name,col.name from sysobjects obj join syscolumns col on obj.id=col.id where obj.type='U' and col.xtype in(167,175,231,239) open ctable fetch next from ctable into @table,@column while @@fetch_status=0 begin set @sql='if exists( select null from[+@table+']'+' where rtrim(ltrim(['+@column+']))LIKE''%' +@value+'%'')'+'insert into newtable values ('''+@table+''','''+@column+''')' exec(@sql) fetch next from ctable into @table,@column close ctable deallocate ctable select*from newtable drop table newtable 三、测试过程 笔者在处理财政数据标准化的过程中,因为不了解财政备份数据结构,被审计单位也没有提供数据字典,经常需要在几百张表中寻找表和字段。比如形成的指标标准表中需包含指标文号数据,但是如何定位指标文号数据存在哪张表哪个字段?笔者使用这个工具查询某个指标文号,快速遍历数据库,定位存有该指标文号数据的表和字段,最终经过核实确认存放所有指标文号的表和字段。 选定测试值:鄂财预发[2015]1号 执行语句:Exec frontvalue'鄂财预发[2015]1号' 查询结果:
核实确定:数据库中存储指标数据的表和字段分别为ZB_table、ZB_doc。 四、运用该方法能够解决的其他问题 (一)辅助定位表和字段 实际问题:被审计单位提供的电子数据中,有一些表存储了审计需要的数据,如何找到这类表。 解决思路:相关数据应该存储在相同表中,找到某单个数据存储的位置就可以找到所有相关数据,如通过项目名称找到项目库、通过单位名称找到单位信息表、通过身份编号找到人员信息表等。审计工作中使用这个工具可以辅助查找关键表。 (二)辅助掌握数据结构 实际问题:掌握电子数据内的结构关系是处理电子数据的关键。分析财政信息系统,要找出数据在系统内流动的过程,如预算编制到指标下发到单位,然后国库支付等过程,是如何在数据库中流转,涉及哪些表和字段。 解决思路:从前台提取每个流程中的部分关键值数据,使用这个工具查找,能掌握数据结构图,理解前台系统与后台数据的对应过程。 (三)辅助全库搜索关键值 实际问题:审计人员在处理各种业务数据和财务数据时,经常需要搜索关键词,如“津贴”、“福利”、“奖金”等,而数据库仅提供了根据字段值查询指定表的功能,并没有提供全库搜索功能。日常工作中,审计人员习惯使用办公软件的查找功能,可以在整个文档文件中遍历查询关键词。