Marc数据格式和数据库格式的转化体会

数据|数据库

首先感谢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.再说一点就是,这种数据转化重要的是吃透格式的要求,其他的算法就是查询写入,看你的功底了。我喜欢利用数组,呵呵。。。

时间: 2024-09-10 05:10:20

Marc数据格式和数据库格式的转化体会的相关文章

oracle to_date 格式化的格式与数据库格式不一致,但是还是能正确格式化?

问题描述 oracle to_date 格式化的格式与数据库格式不一致,但是还是能正确格式化? 解决方案 可以的,to_char to_date这类函数都会正确的转化为规范的数据结构. 解决方案二: LOG_TIME最开始的格式是什么? 解决方案三: 主要看看粗体字: Oracle Database converts strings to dates with some flexibility. For example, when the TO_DATE function is used, a

升级至 Access 2000 时出现不可识别的数据库格式错误消息

access|错误|数据|数据库 这篇文章中的信息适用于: Microsoft Visual Basic Professional Edition for Windows 5.0, 6.0 Microsoft Visual Basic Enterprise Edition for Windows 5.0, 6.0 Microsoft Access 2000 Microsoft Data Access Components 2.5, 2.6本文的发布号曾为 CHS238401 症状当您试图从 Vi

Excel条件格式如何转化普通格式

  Excel表格中的条件格式怎么转化成普通格式?相信有朋友在使用excel表格时会遇到相同的问题.下面就为大家分享excel条件格式转化普通格式方法技巧. 第一步.工作表里设置了一个条件格式,工作表就变成了漂亮的"地砖": 第二步.贴到 WORD 里以后: 第三步.再贴回 EXCEL 中,没有了条件格式,但是"地砖"保留了: 第四步.2007和2010版的还有高招:用剪贴板粘贴! 这个方法适用于所有条件格式转成普通格式.

【JSON 注解】JSON循环引用2----JSON注解@JsonIgnoreProperties+JAVA关键字transient+后台对象与JSON数据的格式互相转化

接着来说这个JSON循环引用的问题: 关于JSON格式的转化,其实关键就是这几个依赖: 1 <!-- json --> 2 3 <!-- 1号 --> 4 <dependency> 5 <groupId>com.fasterxml.jackson.core</groupId> 6 <artifactId>jackson-core</artifactId> 7 <version>2.8.1</version

用TDC建立自己的数据库格式!

数据|数据库 许多人都可能又自己的asp个人主页,但有数据库权限的不会很多,今天我给一个方法.大家可以自己建 立一个库.不用access或sql server的格式.是自己建一个格式.(听起来很高深奥!以前开发一个数据 库,都是些很厉害的系统分析员奥!今天我们来变通一下!)就是这个了控件.TDC:Tabular Data Control.用法:<object id=countsrc classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83&qu

MySQL数据库格式轻松转

mysql|数据|数据库 在Linux界享有很高声誉的MySQL数据库,以其小巧玲珑.功能强大.全免费而著称.但对于很多用户来说,有时候必须要在Windows浏览.分析其中的数据,而在Windows下,MySQL数据库文件是无法被其他程序读取的.所以有人编写了这个格式转换程序---MySQL-to-Access.它可以把MySQL格式数据库文件转换为普通Access数据库文件,方便我们在Windows下轻松编辑.浏览其中的数据了.它适用于所有操作系统版本的MySQL数据库转换. 大家可以到htt

用TDC初步建立自己的数据库格式!(谈谈如何在不支持数据库的asp主页上运用ado!)

ado|数据|数据库 许多人都可能又自己的asp个人主页,但有数据库权限的不会很多,今天我给一个方法.大家可以自己建立一个库.不用access或sql server的格式.是自己建一个格式.(听起来很高深奥!以前开发一个数据库,都是些很厉害的系统分析员奥!今天我们来变通一下!)就是这个了控件.TDC:Tabular Data Control.用法:<object id=countsrc classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83&

用TDC建立自己的数据库格式

数据|数据库 许多人都可能又自己的asp个人主页,但有数据库权限的不会很多,今天我给一个方法.大家可以自己建 立一个库.不用access或sql server的格式.是自己建一个格式.(听起来很高深奥!以前开发一个数据 库,都是些很厉害的系统分析员奥!今天我们来变通一下!) 就是这个了控件. TDC:Tabular Data Control. 用法:<object id=countsrc classid="clsid:333C7BC4-460F-11D0-BC04-0080C7055A83

XML格式字符串转化为实体

问题描述 XML格式字符串如下:<?xmlversion="1.0"encoding="UTF-8"?><Message><RowCountcount="5"><EntityList><Studenttype="Student"><Sidtype="int"value="1"/><SNametype="