□周曄
隨著檔案數(shù)字化建設的推進,館藏數(shù)據(jù)日益增長,以常熟市檔案館為例,根據(jù)臺賬統(tǒng)計,目前入庫的案卷目錄有30多萬條,文件級目錄達到500多萬條。常熟市檔案館數(shù)據(jù)庫設計的基本思想是按全宗建表形成數(shù)據(jù)。由于全宗數(shù)量本來較多,又有變遷的因素,數(shù)據(jù)表數(shù)量本身已經(jīng)比較多;加之歸檔形式的變化和檔案種類的增加等原因,數(shù)據(jù)表的結構日趨多樣化,表數(shù)量也越來越多。檔案管理軟件在使用過程中,又根據(jù)使用目的創(chuàng)建了一些專題數(shù)據(jù)庫表,如退伍軍人檔案、農(nóng)民建房檔案、婚姻檔案專題等,這些專題表,有的與庫藏的其它表有重復,也有的是新增唯一的表;加上各種臨時庫表,庫中的數(shù)據(jù)表近千張。如果要對館藏數(shù)字信息總量,以及分類的各種檔案數(shù)量進行統(tǒng)計,第一選擇是利用檔案管理軟件提供的統(tǒng)計功能完成。但在統(tǒng)計的過程中會發(fā)現(xiàn),這些眾多的表并非按統(tǒng)計的要求而設計,雖然檔案管理軟件也提供多表查詢的功能,但在進行統(tǒng)計時,由于表數(shù)較多、全宗變化等原因,有些分類的跨表統(tǒng)計容易出錯。但如果按表逐一統(tǒng)計,雖可以保證統(tǒng)計的完整準確,但工作量很大。能否找到較為方便的方法,在管理軟件的統(tǒng)計不太方便時,綜觀全庫,使統(tǒng)計工作簡明易做且結果完整準確呢?有一種思路是直接通過數(shù)據(jù)庫本身提供的連接工具,利用通用的數(shù)據(jù)庫標準語言SQL語言,在后臺對整個庫進行操作。通過找到統(tǒng)計對象的共同特點,對全庫按特點進行查詢統(tǒng)計,可以保證數(shù)據(jù)結果的完整準確。思路確定后,在操作過程中會遇到一些問題,例如:SQL語言要求操作的數(shù)據(jù)表有準確的表名,但對本館的數(shù)據(jù)庫而言,檔案管理軟件為安全起見,生成的表名全是沒有規(guī)律不能直接識別含義的隨機字符串。而這些表,也并非全部是館藏的數(shù)據(jù)表,例如,有一些是查檔利用的登記表,里面的條目內(nèi)容并非館藏的內(nèi)容,檔號在輸入時也比較隨意。這些條目是不能統(tǒng)計在內(nèi)的。怎樣找到合適的表名對象,如何正確使用SQL語言,直接對整個數(shù)據(jù)庫進行查詢統(tǒng)計,下面詳細描述采用上述思路完成統(tǒng)計的方法步驟:
通過觀察發(fā)現(xiàn),檔案管理軟件本身使用了一個專門的說明表記錄了所有在管理軟件里正式用到的表名,但這些表中,有一些并非真正保存館藏條目的表,而是一些查檔登記簿或編研統(tǒng)計類表。另外,所有記錄館藏條目的表有一個特征,就是具有“檔號”這個特征字段。所以,我們從說明表中取得一份表名列表,再從全庫中得到有“檔號”字段的表名列表,從這兩份列表中取得交集,再根據(jù)說明表的說明,并分析交集外的數(shù)據(jù)表,對后臺庫中所有表基本有所認識,以此確定合理的所有有效的館藏條目的記錄表,以之作為全部統(tǒng)計的基礎。
上述思路在實現(xiàn)過程中有兩點需要說明,一是求得庫里所有具有“檔號”字段的表名的參考SQL語句如下:
二是和說明表取交集的方法,可以借助EXCEL軟件,先將所有登記表置于一列,再將查詢得到的表名置于一列,借助公式VLOOKUP,得到二者的交集。假設A列存放全部有“檔號”字段的表列集,B列存放說明表中的表列集,C列求得A、B列交集的參考公式如下:
和軟件登記表進行對比分析后,得到有效表名近500個,以這500個表做為以下統(tǒng)計的對象。
將第一步得到的所有有效館藏條目的記錄表中不同的檔號取出,多表取得內(nèi)容的SQL語句可采用聯(lián)合的方法,語句格式如下:
省略號部分,可以利用EXCEL表格,自動生成省略號部分的多表語句。其中參數(shù)DISTINCT,可以保證結果表中檔號全是唯一不重復的。值得說明的是,采用表聯(lián)合的方法,一次最多可查256張表,500張表要分兩次執(zhí)行,故可以將中間結果分別存入臨時表templ,temp2兩張表中,再合并到一個臨時表中,表名叫ALLDH,此表里集中了全館內(nèi)所有不同的檔號,也可以說就是館藏案卷級的數(shù)量了。即可得到總的文件級目錄總數(shù)。
檔案的文件級目錄數(shù),指的是每個案卷含有多少個文件的數(shù)量,在數(shù)據(jù)庫表里,體現(xiàn)為同一卷檔號相同,但卷內(nèi)的順序號不同。而不做卷的檔案,一個檔號就是一件。要得到文件級檔案的總條目數(shù),應該分別統(tǒng)計以卷歸檔和以件歸檔的條目數(shù)并求和。其中以卷歸檔的檔案,數(shù)據(jù)庫中表的標志是,含有“卷內(nèi)順序號”字段,得到不同的檔號及卷內(nèi)順序號就可以了,方法同得到不同檔號的方法。從多個表中得到不同的卷內(nèi)順序號的參考SQL語句如下:
a group by檔號,卷內(nèi)順序號
將所有不同的檔號和卷內(nèi)順序號放到臨時表tdetail中,得到案卷的文件級目錄條數(shù)共計400多萬條。
而對于以件歸檔的檔案,具體表現(xiàn)是其庫表結構中,不會出現(xiàn)“卷內(nèi)順序號”字段。用EXCEL求差集的方法,求得不含“卷內(nèi)順序號”的數(shù)據(jù)表。從這些不含“卷內(nèi)順序號”字段的數(shù)據(jù)表中得到所有的不同檔號放入臨時表“無卷內(nèi)”中,由于不含“卷內(nèi)順序號”的數(shù)據(jù)表還包括案卷目錄,所以再排除有“卷內(nèi)順序號”字段表里出現(xiàn)過的檔號,就是以件歸檔的檔案,一個檔號對應一件檔案。找到有“卷內(nèi)順序號”字段表里出現(xiàn)過的檔號的SQL語句參考如下:
將以卷歸檔和以件歸檔的檔案分別統(tǒng)計的文件級目錄數(shù)量相加,
統(tǒng)計時,除了要求得到總體的數(shù)量,還要求得到不同專題中的案卷和文件級目錄的數(shù)量。如2009年底江蘇省檔案局要求統(tǒng)計以下種類檔案專題的館藏數(shù)量:明清、民國、婚姻、獨生子女、名人、印章、影音、會計、公證、革命歷史、土地(建房)、知青、保先、退伍軍人檔案。對不同的分類,有的在本館做過專題,可以直接在軟件專題里得到數(shù)據(jù);有的檔號具有特點,比如明清檔號,是以K01做為檔號的開始全宗號的,對能找到該類檔號特征的分類,可以很方便地利用前面得到的兩個臨時表ALLDH和tdetail,用SQL查詢語句得到數(shù)據(jù)。查詢案卷數(shù)目的SQL語句為:
SELECT檔號FROM ALLDH WHERE檔號LIKE‘K01%’
而查詢該類文件級檔案數(shù)目的SQL語句為:
SELECT檔號FROM TDETAIL WHERE檔號LIKE‘K01%,
綜上所述,結合數(shù)據(jù)庫后臺直接查詢的方法,加上檔案管理軟件本身的查詢和統(tǒng)計功能,應該就可以較快而準確地完成全庫及分類統(tǒng)計的各項要求了。