财务数据库数据采集分析的主要步骤和基本方法,本文主要内容关键词为:数据采集论文,步骤论文,财务论文,数据库论文,方法论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
随着被审计单位信息化水平提升,财务数据和业务数据利用数据库管理的单位比例大幅度增加,给计算机审计带来新的挑战,审计人员必需熟悉各种数据库的内型、特点和使用方法。要全面掌握单位财务数据和业务数据的真实情况,必需找到它的存储位置,探索打开它的办法,分析数据特征与联系,进行数据清理、转换,使它成为我们熟知的数据格式,以便使用AO等专用工具进行分析、查询。
一、找数据库
查找后台数据库数据路径,要仔细了解被审计单位使用的财务软件的后台数据库类型(Access、SQL Server等),获取数据文件的存放路径。一方面,通过与对方单位专业人员交流,以询问的方式,了解其财务数据和业务数据是采用什么样的数据库进行管理;另一方面,通过查询方式,看对方计算机上面安装了哪些程序,可能用什么样的数据库,再通过前台输入有关数据,按照时间顺序查看有关程序和文件的变化情况,推测其后台数据库情况,以确认其数据库名称和存放位置。
二、迁移数据
数据库找到以后,就要通过备份、还原等方法,将被审计单位的数据迁移至我们熟悉的平台上进行分析。对不同类型的数据库备份后,要选择(配置)相应的服务器端,才能运用ODBC在不同数据库之间进行访问。从Oracle、Foxpro、Sybase、DB2等被审计单位数据库中采集到的备份数据库,要在本机上相应安装Oracle、Foxpro、Sybase、DB2服务器端,然后将备份数据库进行还原,再通过ODBC将还原后的数据库数据导入Access或者SQL Server中。
如将Sybase数据库中的表迁移至SQL Server:先设置Sybase ODBC数据源(打开“控制面板”——“管理工具”——“ODBC”,添加,“Sybase ASE ODBC Driver”,完成。数据源名(Data Source Name):"sybase-1",地址服务器名称(Network Address):"5003"(主机名),数据库名称Database Name:"xyz",测试连接(Test connect),用户(Login ID):sa,OK,连接成功(Connection Established),再导入SQL Server(打开企业管理器——选中一个数据库——打开右键所有任务——导入数据——下一步——数据源:选择Sybase ASE ODBC Driver——用户/系统:sybase1,刚才建的数据源名,用户:Login ID (sa),目的:SQL Server——选择表——下一步——完成。刷新SQL表。)
三、找有价值的表
尽管已经将其数据库中的表迁移至SQL Server,但有时候表有几百张,就要找到有价值的表,一般来说,财务数据库数据必需找到凭证库表、科目表、期初余额表。一要向对方索要数据字典进行比对查找,二要通过英文或者拼音进行猜测,三要根据所需数据表特点进行分析,如凭证库表一般记录的条数多,可以使用“找表游标”,可以查看各表的数据行数(ROW):
Create table row
(name varchar(50),
row int,
reservee varchar(30),
data varchar(30),
index_size varehar(30),
unused varchar(30))
declare @name varchar (50),@sql varchar(500)
declare cur cursor for
select name from sysobjects where xtype='u'
open cur
fetch next from cur into @name
while @@fetch_status=0
begin
set @sql='insert row
exec sp_spaceused'+@name
exec (@sql)
fetch next from cur into @name
end
close cur
deallocate cur
select * from row order by row desc
通过上述语句的执行,一般排前十名的表信息量较大,很可能是我们要找的表,逐一打开查看,看表的每一个字段的数据特征以及各个字段的联系,从而判断哪些表是我们需要的表。当然,如果对方前台使用的是我们熟悉的用友、金蝶、浪潮等财务软件,其后台数据库中的财务表为常见的,采集多了就可以直接找到,如用友8.x SQL Server备份的科目代码表、凭证表、余额表分别为code、GL_accvouch和GL_accsum,金蝶6.2行政事业版—备份文件的科目代码表、凭证表、余额表分别为GLAcct、GLVch、GLBal。
四、找有用的字段
上述表找到以后,有些表的字段达30多个,哪些是我们需要的字段呢?如科目表必需有科目代码和科目名称字段,余额表必需有余额期初、余额金额和余额方向字段,凭证表必需凭证编号、日期、摘要、借方金额、贷方金额和科目代码字段。一是可以比对对方的数据字典查找。二是在无数据字典情况下,按照每一个字段下的数据特征以及字段之间的关联关系分析查找,利用SQL语句进行测试。如,凭证编号一般是按月编制,应该是唯一的,且不能重号、也不能断号。三是利用英文或者拼音查找。四是对照对方的纸质材料,比对分析查找。
五、清理和转换数据表
要将上述数据表和有用的字段导入AO进行加工分析,但必须符合AO要求的数据质量要求,包括数据格式、数据长度等具体要求。
清理数据主要包括确认输入数据、值缺失、修改错误值、替换空值、保证数据值落入定义域中、消除冗余数据、解决数据中的冲突等。对于数据量少的使用EXCEL处理,对于数据量大的使用SQL语句。转换数据主要解决不同数据库格式识别问题和明确每张表和每个字段的经济含义及其内在联系。通常涉及到三种类型:简单变换,日期、时间格式的转换,字段值合并、拆分。简单变换即转换源数据库表中某些字段的类型、长度等,如转换金额字段数据类型的精度、消除科目代码左右空格。日期、时间格式的转换,即将不同格式的日期和时间数据变换成统一的规范格式。而字段值合并、拆分即将源数据库中的多个字段的值合并成一个字段值或将源数据库中的一个字段值拆分成多个字段值。
六、验证数据
通过上述几个步骤,数据基本上符合要求,但是,为了保证电子数据真实性、正确性和完整性,还要验证数据。通常涉及:核对总记录数、金额,检查借贷是否平衡,查看顺序码断号、重号,检查有关数据的勾稽关系等。
如验证一级科目借贷是否平衡语句(假如一级科目长度为3):
select left(kmdm,3)一级科目,sum(j)借方合计,sum(d)贷方合计from pzk group by left(kmdm,3)having'借方合计'!='贷方合计'order by left(kmdm,3)验证有无断号语句:
select序号+1 as断号from序号表where序号+1 notin(select序号from序号表)and序号<(select max(序号)from序号表)
以上介绍只是财务数据库采、转、清、析的一些基本过程,每个过程中的实现途径和方法较多。实际工作中,由于被审计单位的数据存储方式各异,数据库管理系统各异,各个单位管理水平差异等,数据不规范情况和种类较多,因此,要解决一对多的矛盾,只有增强数据库的知识,扎实学习好SQL语句,解决能根据要求提高建表、查表、改表的能力,这是最基本的基本功。同时,对数据结构、数据特征要有清醒的认识,诸如会计科目级次关系、与对方科目关系、借贷平衡关系、上下结转关系等,必须具备一定的会计原理性知识和数理知识,先弄清数据的内在联系、逻辑关系,再通过计算机语言来实现审计需求。
附:安徽省县(区)财会核算中心支付软件(V2005)数据采集转换方法
其后台数据库为Informix数据库,后台操作系统平台为UNIX系统。通过VPN虚拟网络方式,采取隧道加密机制与财政会计核算中心服务器实现网络连接。在审计局端安装Informix数据库客户端Informixcli(也可理解为Informix驱动程序),通过配置客户端以便取得与对方(会计核算中心)数据库的数据连接,然后在审计人员机器端通过ODBC采集财政数据。在取得财政数据的基础上,利用客户端已安装的SQL-Server数据库软件分析财政数据,并通过必要的数据清理和整合,得到符合AO软件转换类型的数据源数据,再将该数据通过AO软件进行采集转换,最终形成完整的电子账套供审计人员分析审核。以下是根据实际情况,为了满足AO要求,在SQL Server中进行数据处理(清理和规范):
select* from informix_zw_kmb——查看表结构;select * into kmb1 from informix_zw_kmb where dwdm='101'——选择单位代码为101的一个单位审计;se lect sum (ncye) from informix_zw_kmhz where len (kmdm)=3 and dwdm='101' and yf=1——查一下期初汇总余额,一方面与纸报表核对是否正确,另一方面判断其记账方向是否有正负号,如果有:sum(ncye)应该为0。本题因为借贷发生中有少量负号,必须排除。
select informix_zw_kmhz.*,informixzw_kmb.yefx into yebl from informix_zw_kmhz,informix_zw_kmb where informix_zw_kmhz.kmdm=informix_zw_kmb.kmdm and informix zw kmhz.dwdm='101'and informix_zw_kmb.dwdm='101'——将两表关联,因为余额方向在科目表中。注意必须两表的关联码单位代码均为101,否则条数会增加。
select * into veb2 from vebl whereyf=1——余额表应该为期初数。
select jzrq,pzzh,pzth from informix_zw_pzmxls order by jzrq,pzzh,pzth——按照日期来判断哪是凭证编号。
select pzfh,zy,k mdm.jje,dje,jzrq into pzb1 from infonnix_zw_pzmxls where dwdm='101'and year (jzrq)=2005——为了保险起见,时间界定为2005,防止肉眼看不清存在非2005年数据。
select sum (jje),sum(dje)from pzb1——测试借贷是否平衡。