Marc資料格式和資料庫格式的轉化體會

來源:互聯網
上載者:User
資料|資料庫 首先感謝CSDN上的djkhym(hym),給我的巨大的協助,借鑒了他的程式的思路。



Marc(machine readable catalogue)資料,機讀目錄資料。Marc格式和資料庫的轉化,是圖書系統裡的重要部分,也是核心技術。現在網上mar資料的資料很少,和資料庫的轉換的資料就更少了。。。。。我主要參考了《中國機讀目錄格式使用手冊》和hym的程式,為了以後大家少走彎路,所以我寫了這個體會。(呵呵,現在網上轉一條marc資料要2毛錢呢)

marc資料的基本格式,大家都可以在《中國機讀目錄格式使用手冊》中詳細的查詢。這裡我簡單的說說。本Marc資料格式遵循GB/T 2901(ISO 2709)的標準,副檔名是.iso。如下是記錄marc的iso檔案中的一行,也就是一條marc資料。

00806nam0 2200229 450 001000900000010003500009092002000044100004100064101000800105102001500113105001800128106000600146200003100152210003300183215001500216330020500231333008500436606000500521690000800526701001500534801002700549?S7240011? ­a7-5034-1525-8­b精裝­dCNY130.00? ­aCN­b01-724-0011? ­a20021211d2002 ekmy0chiy0121 ea? ­achi? ­aCN­b110000? ­ay z 000yy? ­ar?1 ­a鄧小平理論辭典­f李長福主編? ­a北京­c中國文史出版社­d2004.7? ­a0720­d16開? ­a本書是一部力求全面、系統、準確反映鄧小平理論科學體系和檢索鄧小平理論重要觀點,供廣大黨員、幹部及群眾學習、研究、宣傳鄧小平理論的工具書。全書在反映、闡述鄧小平理論的同時,還涵蓋了馬克思列寧主義、毛澤東? ­a思想和“三個代表”重要思想的核心內容,體現了科學社會主義理論一脈相承的發展脈絡。? ­a? ­a­v4? 0­a李長福主編? ­aCN­bS7240011­c20040709?



記錄結構:記錄頭標 、地址目次區 、資料欄位區、記錄結束符

00806nam0到450#是記錄頭標(#代表空格)

001000900000到801002700549@是地址目次區(@代表欄位分隔符號IS2)

S7240011到20040709@是資料欄位區

%是記錄結束符(%代表記錄結束符IS3)

具體的每一個位元組都有特殊的含義,大家可以看書,我這裡講講自己轉換的體會。

1. 欄位長度的計算:0-4位是代表記錄的總長度,注意包含了空格和分隔標誌符。英文字元1位,中文字元2位。注意asp中len(“我”)結果是一位,故vb中這樣寫長度計算:LenB(StrConv(st1, vbFromUnicode)),再用format(str1,00000)來格式化輸出。

2. 幾個符號:

$:字欄位標識符IS1

@代表欄位分隔符號IS2

%代表記錄結束符IS3

這是人為的標記,便於學習和觀看。在實際系統裡一般用這幾個字元代替:

$--------chr(31)

@--------chr(30)

%--------chr(29)

還有個空格很重要,每個欄位間的空格都是嚴格規定的,所以學習的時候用#來代表空格。如頭標:01071nam0#2200277###450#

3.地址目次區的理解:人為添加,和;的分隔,就很明顯了。

001,0013,00000;005,0017,00013;…………………………801,0022,00771@

這裡001,0013,00000;是表示資料欄位區的第一個欄位,欄位號:001,長度:0013,開始的位置:00000。後邊的類推,就是位置在加。

Dbtomarc的計算方法,先寫資料欄位區,再一個欄位一個欄位的算,可以開一個數組:Block(i, 3) , Block(i, 0)為標識,Block(i,1)列為寬度,Block(i, 3)列位置,I是指欄位的個數。

Marctodb就是反過來了。。先讀,在去截資料欄位區。

地址目次區一定要算對,否則電腦可不認識,後邊的資料就錯位了。

4.資料欄位區:

按欄位一個個的寫入(讀出)就可以了。注意一點:

012001022343@20020928000000.0@##$a7-80142-191-4$dCNY46.00@…………………………………………@%

就是空格個數和分隔字元號的使用,一定要注意,否則格式就錯了,不能機讀,這可是我的教訓啊。。。。

5,將轉換的資料庫欄位作成設定檔,可以選擇的轉換,便於程式的通用。

和編輯約定規則,如資料庫記錄中:書名[版次]、書名<叢書>這樣擷取版次,判斷是否是叢書。還有是就編著者不超過3個……看你程式設計的通用性了。

6.拼音的實現,我是查的數組實現的,不知道有沒其他的好辦法。。。

7.再說一點就是,這種資料轉化重要的是吃透格式的要求,其他的演算法就是查詢寫入,看你的功底了。我喜歡利用數組,呵呵。。。



相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。