审计实践中,在利用Sql Server导入导出向导,导入Excel数据时,若遇到某列数据太长,便出现“文本被截断,或者一个或多个字符在目标代码页中没有匹配项”的错误,导致数据导入失败,直接影响着下一步的数据分析。笔者在审计工作过程中,发现利用Excel内置Mid函数可有效解决此问题,以下是详细步骤,与大家共享和共勉。
步骤一:在Excel中利用Mid函数将长列分成n个短列
以导入某工商注册登记数据为例。在名为工商注册登记的Excel中有“企业名称”、“法定代表人”、“企业地址”、“经营范围”等列。其中,“企业名称”、“法定代表人”、“企业地址”这几列的数据长度一般都在20个字符以内,而“经营范围”这列的部分数据长度超过255个字符(Sql Server导入字符个数上限是255个),若不经过任何处理直接导入Sql Server中便会出现文本被截断的错误。因此在导入之前,必须在Excel中利用Mid函数,将“经营范围”这列分成若干个短列。具体来说,就是在“经营范围”列后新建n列。其中第一列设置公式Mid(“经营范围”,1,255),并取列名“经营范围1”,目的在于截取原“经营范围”列的前255个字符;第二列设置公式Mid(“经营范围”,256,255),并取列名“经营范围2”,目的在于截取原“经营范围”列的第二个255个字符,依次类推,直到将最长的那个经营范围分成了若干个短列。然后,将Excel中“经营范围1”至“经营范围n”通过复制、粘贴为数字等步骤后,手动删除“经营范围”原列,即可将Excel数据成功导入Sql Server中。
步骤二:在Sql Server中新建列,并利用Update函数将n个短列合并成长列
还是以上述工商注册登记数据为例。在利用Mid函数成功将“经营范围1”至“经营范围n”导入Sql server后,接下来就需要将这n个短列合并成一个长列(字段)。首先,在工商注册登记数据表中新建一个字段,命名“经营范围”,数据类型为nVarchar(4000)(代表这个字段可以容纳4000个字符)。然后编写Sql语句:update 工商注册登记数据表 set 经营范围 = 经营范围1 + 经营范围2 + ......+ 经营范围n 。执行更新语句后,便将n个短列合并成了一个长列,然后手动删除“经营范围1”至“经营范围n”字段即可。
小结:通过上述两个步骤,非常巧妙的解决了Sql server导入Excel数据时,因列内容太长而导入失败的问题,为审计人员开展进一步审计分析,提供了数据基础,也为审计人员解决类似问题,提供了审计思路。(汉寿局 张凯)