随着经济普查工作的深入开展,各地普查办都面临一系列名录库整合的问题,整合过程中对数据库的查缺补漏工作大致包含以下三种情况:一是少部分单位错过了普查登记,根本没有参加清查等各阶段工作,需要查缺补漏;二是部分单位由于人员更换、经营地变迁等原因,本单位不知道是否参加了清查,需要根据普查库核实;三是一部分单位从不同的地区和途径参加了多次清查,需要删重。要及时更新补充数据库,确保普查单位不重不漏,这就需要普查人员做大量浩繁复杂的工作,更需要在工作中探寻好的技巧和方法,将问题化繁杂为简单。
笔者曾阅读过不少数据库对比剔重的方法,受到不少启迪,同时在笔者参加的门头沟区经济普查具体实践中,发现日常统计中最普遍使用的ACESS及SQL软件同样可以实现这些功能,而且这些方法更加简易方便,为此,特总结出来供大家商榷。
一、使用ACESS的主键功能。
定义:主键是指其值能唯一地标识表中每条记录的字段(列)。简单地说,主键就是取值只能唯一的字段,字段一旦被定义为主键之后,其取值不能重复。
特点:使用ACESS,不需要书写任何命令,操作简单有效,容易掌握。因此,我们在普查实际工作中,可以将清查库中的基层单位填报的技术监督局下发的组织机构代码定义为主键,实现以下功能:
(一)剔除清查中出现的重复单位
操作步骤:1、建立ACESS数据库后,使用设计器创建一张数据表,然后可以将其命名为“所有清查单位”,表的结构与经济普查的清查表结构相同;2、将组织机构代码字段在“设计视图”中设置为主键;3、将包含有所有清查单位名录的数据表(通常是DBF格式)转换为EXCEL格式;4、打开EXCEL后复制所有清查单位记录,然后粘贴到ACESS的“所有清查单位”表中。
实现功能:此时由于组织机构代码已被设置为主键,因此重复出现的组织机构代码将会出现在自动生成的名为“粘贴错误”的ACESS表中,打开这张表,就可知道哪些单位曾重复登记。而此时的“所有清查单位”一表中,出现的单位名录是剔除重复以后的所有单位。
(二)查找此单位是否参加了清查
操作步骤:1、打开“所有清查单位”的ACESS表(此时这张ACESS表中应已包含所有已清查过的单位),任意选择一条记录;2、点击鼠标右键后选择新记录,在单位代码一列输入需要查找单位的组织机构代码。
实现功能:如果此单位已参加清查,将会出现字样为“将在索引、主关键字或关系中创建重复的值……”的提示,因此在点击确定后,可删除该单位代码。如果未出现任何提示,表明此单位没有参加过清查,保存该代码,开展查缺补漏操作。
二、使用SQL数据表关联功能
特点:SQL的这些语句与VFP相比要相对简单一些,同时它具有一个最大的优点,就是不需要两个相对比的数据库具有相同的字段名称。与ACESS相比因为要输入语句,略显复杂一些,但是能实现更多的功能。
实现功能:两个数据库进行快捷对比,将差异单位存为新数据库。试以经济普查中常用的“比照清查库和最新工商库,并将在工商库中存在但清查库未出现的单位另存为未清查库”为例。
操作步骤:1、利用SQL的导入导出功能,将清查单位名录和最新工商库导入到SQL SEVER中;2、打开SQL的“企业管理器”或“查询分析器”,选择包含有清查和工商库的数据库;3、打开数据库,在SQL语句输入窗口输入相应语句:
SELECT * INTO 未清查库 FROM 工商库 WHERE单位代码not in (SELECT 单位代码 FROM 清查库)
库的名称和字段的名称需要根据实际情况更改,例如:工商库名为GS,工商库中的单位代码字段名为DM,清查库名为QC,清查库中的单位代码字段名为A01,则此命令为:
SELECT * INTO 未清查库 FROM GS WHERE DM not in (SELECT A01 FROM QC)
如果需要查找工商库中已清查单位,则将上述语句中“INTO”后的数据库名更改为“已清查库”,同时去掉语句中的“NOT”,相应语句:
SELECT * INTO 已清查库 FROM GS WHERE DM in (SELECT A01 FROM QC)
此外,在SQL SEVER中生成新的数据表后,同样可以利用它的导入导出功能,将数据转换成ACESS的MDB、EXCEL的XLS、FOXPRO的DBF等多种格式,实现更多的操作。
(作者单位:北京市门头沟区经普办)