通用电子表格数据入库方法研究

时间:2022-09-24 10:24:15

通用电子表格数据入库方法研究

1 引言

在数据仓库建设过程中,经常遇到无信息系统进行管理的制式EXCEL报表数据。这类数据入库常采用以下两种方法:一是开发新的信息系统重新录入数据;二是借助第三方工具,如SQLLDR、POWERBUILDER、PL/SQL DEVELOPER等导入。方法1数据重复录入,工作量大;方法2简单,速度快,但无法解决下面三个问题:

一是名称转代码问题。通常,报表只提供单位或物资名称,而名称不利于信息的查询、维护,必须转换为代码;

二是名称与代码间的多对一映射问题。同一单位或物资在不同的报表中极有可能出现名称不一致现象,如何将其映射到同一代码也是直接导入无法解决的问题;

三是交叉报表数据无法直接入库。我们在详细分析各业务部门提供的EXCEL电子表格的基础上,对其进行了准确的类别划分,通过二级映射机制,设计了C/S结构的通用数据采集工具,很好地解决了此类数据的入库问题。

2 电子表格文档分类

EXCEL电子表格可分为三种主要样式:

行列式:电子表格中的行和数据库表中的记录一一对应,列与数据库表中的字段一一对应。

卡片式:每一页(SHEET)对应库中的一条记录(RECORD),单元格对应数据库表中某一行中的某一字段。

交叉式:电子表格中的一行应转换为数据库表中的多行。

3 设计思想

针对这三种主要表格样式,以通用性、易用性为指导思想,通过“两级映射”机制,即EXCEL文件到数据库表的映射、行列到表字段的映射,映射表结构见表1、表2,设计了相应的数据采集工具。

3.1 数据采集总体流程

数据采集总体流程如下:

(1)维护文件映射表和字段映射表;

(2)数据采集是否结束,结束转(7),否则转(3);

(3)判断表格形式,如为行列式,进入(5);如为卡片式进入(6);如为交叉表进入(7);

(4)行列式信息采集,转(3);

(5)卡片式信息采集,转(3);

(6)交叉表信息采集,转(3);

(7)采集结束。

3.2 行列式信息采集

由于行列式报表与数据库表在结构上的一致性,采集相对简单,只需注意以下三点:

真实数据从第几行开始;确定需要进行代码转换的列;确定列的代码转换类型。

3.3 卡片式信息采集

卡片式信息采集算法如下:

(1)确定文件中的卡片总数CNT,该数即为将入库的记录数;

(2)循环变量I初始化为1;

(3)I大于CNT,转(8),否则转(5);

(4)将第I张卡片信息读入临时数组;

(5)名称转代码处理;

(6)数据入库;

(7)I增1,转(3);

(8)数据采集结束。

3.4 交叉表信息采集

为节省篇幅,仅给出算法基本思想:

扫描EXCEL文档确定入库数据的总行数和总列数;初始化行指针和列指针;列指针为外层循环,行指针为内层循环,开始遍历数据,同时进行有效性检查和代码转换,有效数据入库,对无效数据记录精确到行列的出错信息,直至数据处理完毕。

4 结束语

论文介绍的方法很好地解决了EXCEL数据直接入库所不能解决的三个问题,而且在很大程度上减轻了信息录入人员的工作量。该方法在我室主研的某数据仓库项目中发挥了很大的作用。

上一篇:Web 2.0网站应该注意的主要法律问题 下一篇:自己解决Vista系统六个常见问题