最近笔者参与全省“稳促调惠防”相关金融政策措施落实情况审计调查,该项目需调查全域小微企业融资面临的主要困难,涉及大量问卷调查表的汇集与分析,面对巨大的工作量,在有限的人力和时间条件下,必须运用多种信息化技术手段,不断改进工作方法,才能准确、高效完成审计任务。
审计人员日常处理审计数据主要使用SQLServer数据库和EXCEL工具。数据库善于管理数据,通过SQL语句可以灵活、高效的处理和分析海量数据,但未系统学习数据库技术的工作人员上手难,而EXCEL工具管理数据方便、直观,便于一般工作人员操作,但处理海量数据效率和准确率相对较低。数据库和EXCEL工具各有优势,只有善于各取所长,结合使用,才能最大化发挥两个工具的价值。
一、三种高效数据处理方法
如何将SQLServer数据库和EXCEL工具结合使用,提高处理、分析大数据的效率呢,平常大家熟悉的数据库导入导出数据工具就不介绍了,因为碰到大量EXCEL文件,导入导出数据工具过程繁琐、效率低,下面主要介绍三种高效方法实现SQLServer数据库和EXCEL表数据相互导入导出:
(一)使用openrowset函数实现数据导入导出。
步骤一:启用 Ad Hoc Distributed Queries 高级配置选项,允许openrowset访问外部数据源,如果未配置选项,默认条件下不允许访问。在SQLServer数据库管理器中新建查询,输入语句:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
步骤二:
(1)输入语句,将单个EXCEL表导入SQLServer数据库
select * into test from OpenRowSet('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=Yes;IMEX=1;Database=C:1.xls',[Sheet1$])
(2)输入语句,将多个EXCEL表导入SQLServer数据库
Select * into test from
(select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=Yes;IMEX=1;Database=C:1.xls',[Sheet1$])
union all
select * from OpenRowSet('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=Yes;IMEX=1;Database=C:2.xls',[Sheet1$])
……)a
备注:(1)(2)语句是将本机C盘中名称为1、2……的EXCEL表导入数据库test表中(自动在数据库新建test表),HDR=Yes表示第一行是列名(HDR=No表示第一行无列名),Sheet1是工作表名称。
(3)输入语句,将SQLServer单个表导入EXCEL
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:1.xls',sheet1$)
select * from test
(4)输入语句,将SQLServer多个表导入EXCEL
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:1.xls',sheet1$)
select * from test1
union all
select * from test2
……
备注:(3)(4)语句是将数据库表test1、test2导入本机C盘中名称为1的EXCEL表(EXCEL表需提前建立且表结构和数据库test表一致),Sheet1是工作表名称。
(二)使用OpenDataSource函数实现数据导入导出。
步骤一:启用 Ad Hoc Distributed Queries 高级配置选项,允许OpenDataSource访问外部数据源,如果未配置选项,默认条件下不允许访问。在SQLServer数据库管理器中新建查询,输入语句:
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
步骤二:
(1)输入语句,将单个EXCEL表导入SQLServer数据库
Select * into test FROM OpenDataSource('MICROSOFT.JET.OLEDB.4.0','Data Source="C:1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
(2)输入语句,将多个EXCEL表导入SQLServer数据库
Select * into test from
(select * FROM OpenDataSource('MICROSOFT.JET.OLEDB.4.0','Data Source="C:1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
Union all
select * FROM OpenDataSource('MICROSOFT.JET.OLEDB.4.0','Data Source="C:2.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$])a
备注:(1)(2)语句是将本机C盘中名称为1、2……的EXCEL表导入数据库test表中(自动在数据库新建test表),User ID 和Password 分别设置EXCEL表用户名和密码,如果未设置用户名和密码,可默认使用上面代码,Sheet1是工作表名称。
(三)使用BCP工具快速导入导出数据。
步骤一:
启用 xp_cmdshell 组件,如果未启用,默认条件下此组件已作为服务嚣安全配置的一部分而被关闭。在SQLServer数据库管理器中新建查询,输入语句:
sp_configure 'show advanced options',1
reconfigure
sp_configure 'xp_cmdshell',1
reconfigure
步骤二:
(1)输入语句,将单个EXCEL表导入SQLServer数据库
EXEC master..xp_cmdshell ’bcp "dbname.dbo.tablename" in c:1.xls -c -S"servername" -U"sa" -P"password"’
(2)输入语句,将多个EXCEL表导入SQLServer数据库
EXEC master..xp_cmdshell ’bcp "dbname.dbo.tablename" in c:1.xls -c -S"servername" -U"sa" -P"password"’
EXEC master..xp_cmdshell ’bcp "dbname.dbo.tablename" in c:2.xls -c -S"servername" -U"sa" -P"password"’
……
备注:(1)(2)语句是将本机C盘中名称为1、2……的EXCEL表导入数据库表中,dbname.dbo.tablename 指数据库名称.dbo.表名称,servername 为数据库实例名称,sa 为登录用户名,password 为登录密码,切记-S、-U、-P为大写字母。
(3)输入语句,将SQLServer单个表导入EXCEL
EXEC master..xp_cmdshell 'bcp "DBname..tablename" out c: 1.xls -c -S"servername" -U"sa" -P"password"'
(4)输入语句,将SQLServer多个表导入EXCEL
EXEC master..xp_cmdshell 'bcp "DBname..tablename" out c: 1.xls -c -S"servername" -U"sa" -P"password"'
EXEC master..xp_cmdshell 'bcp "DBname..tablename" out c: 1.xls -c -S"servername" -U"sa" -P"password"'
……
备注:(3)(4)语句是将数据库表导入本机C盘中名称为1的EXCEL表中,dbname.dbo.tablename 指数据库名称.dbo.表名称,servername 为数据库实例名称,sa 为登录用户名,password 为登录密码,切记-S、-U、-P为大写字母。
二、在“稳促调惠防”审计调查中的应用
本次调查以中小微企业为主,全域共有中小微企业XXX多家,本次抽样调查XX家企业,按企业所在乡镇划分,包含14个乡镇和1个开发区,统计口径涉及规模以上和规模以下企业。本文主要分享数据处理技术在小微企业融资面临的主要困难问卷调查表中的应用。
(一)应用思路。
首先收集各地填报的问卷调查表,然后运用BCP工具把所有调查表导入SQLServer数据库,使用SQL语句分析小微企业填报的数据,最后形成分析结论。
(二)具体过程。
步骤一:收集各地填报的问卷调查表。
步骤二:编写BAT可执行文件,提取表名。
BAT文件中命令行:DIR *.* /B >LIST.TXT
步骤三:在EXCEL工具中,快速编写BCP代码。
步骤四:在SQLserver输入语句,导入EXCEL表。
步骤五:利用SQL语句分析小微企业融资面临的主要困难。
SELECT [县(市、区)名称]
,[调查企业名称]
,[近年主要融资渠道]
,[是否有融资需求]
,[银行未能满足贷款需求的主要原因]
,[对银行提供的服务是否满意]
,[从银行融资难易程度]
,[获得银行融资的主要途径]
,[银行贷款或其他融资的综合成本(年息)]
,[目前银行方面存在的主要问题]
,[现阶段如果存在资金短缺问题,其资金缺口是]
,[在向银行贷款的过程中,产生过哪些隐形融资成本]
,[是否了解当前金融机构支持小微企业发展的优惠政策及相关信贷产品]
,[其他]
,[备注]
FROM [金融调查].[dbo].[test]
步骤六:形成分析结论。
通过数据分析,各企业反映:近年主要融资渠道为银行金融占比XX%,对银行提供的服务不满意的占比XX%……(转自审计署网)