分类

  • 软件天地

  • Marc数据格式和数据库格式的转化体会‖
      00806nam0到450#是记录头标(#代表空格)                          

      001000900000到801002
    700549@是地址目次区(@代表字
    段分隔符IS2)

      S7240011到20040709@是数据字段区                              

      %是记录结束符(%代表记录结束符IS3)                                      

      具体的每一个字节都有特殊的含义,大家可以看书,我这里讲讲自己转换的体会。      

      1.字段长度的计算:0
    符1位,中文字符2位。注意
    LenB(StrConv(st1, vbFrom
    -4位是代表记录的总长度,注意
    asp中len(“我”)结果是一位,
    Unicode)),再用format(str1,0
    包含了空格和分隔标志符。英文字
    故vb中这样写长度计算:
    0000)来格式化输出。

      2.几个符号:                                                                

      $:字字段标识符IS1                                                        

      @代表字段分隔符IS2                                                        

      %代表记录结束符IS3                                                        

      这是人为的标记,便于学习和观看。在实际系统里一般用这几个字符代替:            

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

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

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

      还有个空格很重要,每
    。如头标:01071nam0#2200
    个字段间的空格都是严格规定的
    277###450#
    ,所以学习的时候用#来代表空格


      3.地址目次区的理解:人为添加,和;的分隔,就很明显了。                      

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

      这里001,0013,00000;是表示数据
    开始的位置:00000。后边的类推,就是
    字段区的第一个字段,字段号:001,长度:0013,
    位置在加。

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



    上一页 下一页




    map