在财政同级审期间,因为农业科粮食直补数据、水稻良种补贴数据、水稻小麦保险数据采用电子表格形式记录,并且每个乡镇一个表格,而使综合分析、全面把握存在一定的难度,因而必须将这些数据导入到Sqlserver数据库中。而使用Sqlserver数据库的导入导出工具导入数据时,因为Excel数量较多,相当麻烦,而且由于默认数据转换方式的问题,会使一部分数字列变为Null值,导致导入失败。通过摸索研究,采用以下几个步骤做法可以提高工作效率。 一、开启opendatasource选项。Opendatasource选项为了数据安全性考虑是默认关闭的,需要手工开启,可以在查询分析器内执行修改默认设置: exec sp_configure ′show advanced options′,1reconfigure exec sp_configure ′Ad Hoc Distributed Queries′,lreconfigure 二、各个乡镇的Excel表格名称是有规律的,表格内的Sheet表名是一致的,所以可以结合批处理和Opendatasrouce工具,改变数据库默认数据转换方式,强制将所有EXCEL数据,都导入到数据库各自表中。具体步骤如下: 1.所有表格都在D:\Income文件夹下,将所有Excel文件名输出到1.txt记事本中; 2.文件名都按照“小麦保险赔款BXSDBX宋集乡_3208032300(2010_7).xls”方式命名,可以对其统一处理,使用相似的语句,将所有Excel表格导入到Sqlserver数据库中。利用For语句将所有导入语句批量生成到2.txt; 3.使用Sqlcmd执行2.txt,便可以将所有数据导入到各自的乡镇表中; 4.再删除生成的1.txt,2.txt中间文件; 5.将以上所有代码写到txt记事本中,更改后缀为.bat,并双击执行,即可将上述所有步骤全部执行完毕。例如:导入.bat,内容为: @dir/b D:\Income>l.txt @for/F "delims=_ tokens=l,2,3*" %%i in(1.txt)do echo select * into[2010财政同级审]..%%k from Opendatasource(′Microsoft.Jet.OLEDB.4.0′,′Data Source= "d:\income\%% i_%%j_%%k_%%l.xls"; Extended properties=Excel 8.0; hdr=no; IMEX=1;'").[银行接口
]>>2.txt @sqlcmd-E-i 2.txt @del/q 1.txt @del/q 2.txt @exit 三、使用Union all语句将所有表数据导入到同一个表中,如:select*into[2010财政同级审]..汇总表from(select *from博里镇union all select*from车桥镇)。 四、在导入后的数据,因为存在表头,使用hdr=no选项,所以列名为系统默认添加的F1,F2,F3等等,可以根据列内容更改列名。本次审计涉及到数据的列名较少,汇总后修改比较方便。若列名较多,可以删除某一表头内容,使其第一列作列名,而在导入时,修改hdr=yes,再将这一张表格作用union all的第一张表,便可以省去修改列名的麻烦。 五、删除表中无中的表头信息。例如:delete from[2010同级审]..汇总表where身份证号码not like′3%′。 至此,所有数据已经导入到Sqlserver数据库完毕,如果习惯使用AO进行审计工作,还可以将Sqlserver中的数据导入到AO中,这里不再细述。