티스토리 뷰

도서 관리 프로그램을 처음 사용하는 사용자라면 어차피 처음부터 정보를 입력해야 하지만,
기존에 사용하고 있던 솔루션이 있다면 OpenBiblio에 관련 정보를 일괄 자료 변환하여 입력하면 정보를 하나씩 입력해야 하는 수고를 줄일 수 있다.
솔루션이 아니더라도 엑셀이나 텍스트 파일로 관리하던 정보가 있다면 이 또한  일괄 자료 변환의 기초 자료를 활용할 수 있다.
 
일괄 자료 변환을 위한 OpenBiblio의 기능은 OpenBiblio>목록관리 탭>목록 일괄 입력 메뉴를 통한 MARC 형태의 목록을 일괄로 입력하는 방법과 DB 마이그레이션 방법이 있다.


 
MARC 형태의 목록 일괄 파일로 기존 자료를 Export 할 수 있다면 OpenBiblio에서 제공하는 일괄 입력 방법을 사용할 수 있지만, 그렇지 않은 경우에는 이 방법을 적용하기에는 무리가 있다. MARC자료를 입수하는 방법으로는 공공도서관 등에서 배포하는 MARC 파일을 사용할 수 도 있지만 이 경우에는 자신의 도서관에 소장하고 있지 않은 목록 정보까지 모두 입력하므로 목록 정보를 수작업으로 입력하는 수고는 줄일 수 있지만 불필요한 목록 정보로 인한 혼란이 있을 수 있다.
 
아래의 그림은 호주의 Project Gutenberg Australia에서 배포하는 MARC 파일을(http://gutenberg.net.au/marc.html 참조) 일괄 입력한 결과창이다.


 
 
우리나라의 국립중앙도서관의 경우에는 신청서를 작성해서 제출한 기관에 대하여 신착자료 MARC를 제공하고 있다.(http://www.nl.go.kr/nation/c2/page4.jsp 참조)
미국 의회 도서관의 경우에는 온라인 목록 정보 검색 결과창에서 결과를 바로 MARC 파일로 다운로드 받을 수 있다.(http://catalog.loc.gov/ 참조) 아래의 그림은 미의회 도서관의 온라인 검색 결과에서 MARC정보를 다운 받는 화면이다.

 

 
MARC 정보를 다운로드 받는 것이 애매한 상황이거나, 기존 자료를 변환해서 입력하는 경우에는 OpenBiblio에서 제공하는 MARC 일괄 입력을 사용하기보다는 DB 마이그레이션 작업 통한 일괄 입력이 적절하다고 볼 수 있다.
 
DB 마이그레이션을 위해서는 원본 테이블의 구조를 파악하고 있어야 하는것은 물론이고 목적지인 OpenBiblio 테이블들의 스키마를 파악해 두는 것이 꼭 필요하다. 다음의 예제에서는 그누보드 게시판에 단순한 형태로 관리하던 도서 정보들을 OpenBiblio의 목록정보 테이블(biblio)과 사본 정보 테이블(biblio_copy)에 마이그레이션 하는 과정을 살펴보고자 한다. 이 과정은 엑셀자료나 다른 패키지의 자료를 OpenBiblio에 입력 할 때도 유사하게 할용할 수 있을 것이다.
 
우선 원본 테이블을 Export받아 openbiblio DB에 Import해서 작업 준비를 한다. 아래 그림은 원본 그누보드 테이블(g4_write_library)와 목적지 목록 및 사본 정보 테이블의 구조이다.(phpMyAdmin>Designer 참조)


 



* 원본 테이블(g4_write_library)의 각 속성 분석
  • wr_id : 글 고유번호, 변환대상아님
  • wr_num : 글 번호, 변환대상아님
  • wr_reply : 답변 글, 변환대상아님
  • wr_parent : 상위 글 번호, 변환대상아님
  • wr_is_comment : 댓글 여부, 변환대상아님, 값이 1인 경우 댓글로 해당 행을 변환 대상에서 제외
  • wr_comment : 댓글 번호, 변환대상아님
  • wr_comment_reply : 댓글 답변, 변환대상아님
  • ca_name : 분류, 변환대상아님
  • wr_option : HTML여부, 변환대상아님
  • wr_subject : 책제목 - ISBN 구조(ISBN이 없을수도 있다)
  • wr_content : 책 상세 정보(HTML 형식)
  • wr_link1 : 글링크1, 변환대상아님
  • wr_link2 : 글링크2, 변환대상아님
  • wr_link1_hit : 글링크1 클릭수, 변환대상아님
  • wr_link2_hit : 글링크2 클릭수, 변환대상아님
  • wr_trackback : 트랙백, 변환대상아님
  • wr_hit : 조회수, 변환대상아님
  • wr_good : 추천, 변환대상아님
  • wr_nogood : 비추천, 변환대상아님
  • mb_id : 작성자 아이디, 변환대상아님
  • wr_password : 비밀번호, 변환대상아님
  • wr_name : 작성자 성명, 변환대상아님
  • wr_email : 작성자 이메일, 변환대상아님
  • wr_homepage : 작성자 홈페이지, 변환대상아님
  • wr_datetime : 작성일
  • wr_last : 최종변경일
  • wr_ip : 작성 아이피, 변환대상아님
  • wr_1 ~ wr_10: 예비, 변환대상아님 
* 목록정보 테이블(biblio)의 각 속성 분석

  • bibid : AUTO_INCREMENT 속성이므로 자동으로 결정되도록 INSERT에서 제외. 단, INSERT이후 생성된 행의 bibid를 알아야 사본 정보에서 사용할 수 있다.
  • create_dt : 생성일
  • last_change_dt : 최종변경일
  • last_change_userid : 최종변경자, 기본관리자 아이디는 1. 다른 사용자를 입력할때는 해당 사용자의 staff테이블의 userid 값을 찾아서 입력한다.
  • material_cd : 자료 종류 코드. material_type_dm 테이블에 있는 자료종류중에 해당하는 code 컬럼값을 입력한다. 예제에서 도서의 code값은 2.

  • collection_cd : 자류 분류 코드. collection_dm 테이블에 있는 자료분류중에 해당하는 code 컬럼값을 입력한다. 예제에서 성인비소설의 code값은 2.
  • call_nmbr1 : 청구번호1. 책의 위치를 지정해주는 것으로 층, 실, 책꽂이등등을 감안하여 임의로 입력합니다.
  • call_nmbr2 : 청구번호2.
  • call_nmbr3 : 청구번호3.
  • title : 제목
  • title_remainder : 부제
  • responsibility_stmt
  • author : 저자
  • topic1 : 일반주제명1. 태그 또는 주제로 입력할 내용이 있으면 임의로 입력합니다.
  • topic2 : 일반주제명2
  • topic3 : 일반주제명3
  • topic4 : 일반주제명4
  • topic5 : 일반주제명5
  • opac_flg : 온라인 검색(OPAC) 공개 여부. Y-공개, N-비공개
 
* 사본정보 테이블(biblio_copy)의 각 속성 분석



  • bibid : 목록 번호, biblio 테이블의 bibid
  • copyid : 동일 bibid 내의 사본 순번, 첫항목이라면 1
  • create_dt : 생성일
  • copy_desc : 사본 설명(optional)
  • barcode_nmbr : 사본 바코드 번호, 반드시 유일한 값으로 입력한다. 자동생성규칙을 따르려면 5자리 bibid(앞으로 0채움)와 copyid를 붙여서 입력한다.
  • status_cd : 사본 상태 코드로 material_type_dm 테이블의 code 컬럼 값을 입력한다. in:서고, out:대출, mnd:파손/수리, dis:전시, hld:예약대기, lst:분실, ln:대여, ord:주문, crt:수거카트 등이 있다.
  • status_begin_dt : 현상태 변경일
  • due_back_dt : 반납일, 없으면 NULL 입력
  • mbrid : 대출회원 아이디, member 테이블의 mbrid 컬럼값, 없으면 NULL
  • renewal_count : 갱신 회수, 0으로 설정
 
 
위의 테이블 분석에서 목록 정보와 사본 정보 정도만 변환입력해도 변화 작업은 성공적이라 할 수 있겠지만, 원본 자료에 입력해 놓았던 자료들을 손실없이 OpenBiblio로 옮기기 위하여 추가 MARC 필드 정보를 입력하는 방식으로 정보를 마이그레이션 하고자 한다.




biblio_field 테이블은 각 목록단위로 추가적인 MARC 항목들을 입력 관리하기 위한 것으로
본 예제에서는 원본에 있는 책 설명등의 정보를 MARC-520 Tag인 "요약 등 주기(Summary, Etc.)" 항목에 입력하고자 한다.
bibid : 목록 번호, biblio 테이블의 bibid
fieldid : 동일 bibid 내의 MARC 항목 순번, 첫항목이므로 1
tag : MARC Tag, 예제에서는 520
ind1_cd : 제1지시기호. 예제에서는 사용치 않으므로 'N'
ind2_cd : 제2지시기호. 예제에서는 사용치 않으므로 'N'
subfield_cd : 항목 식별 기호. 예제에서는 "요약 등 주기(Summary, Etc.)" 이므로 a
field_data : 실제 설명 내용
아래 그림은 OpenBiblio 내부 목록 관리중 MARC 항목 편집창을 나타낸 것이다.


 
 
위와 같이 DB 마이그레이션을 위한 원본 자료 Import, 분석등의 작업 준비가 끝났으면 이제는 본격적으로 DB 마이그레이션 프로그램을 작성하면된다. OpenBiblio가 PHP 기반이므로 PHP로 프로그램을 작성할까 한다.
 
 
<?php
require_once("../shared/common.php");
$tab = "home";
$nav = "home";
require_once("../classes/Query.php");
require_once("../shared/header.php");
?>
<h1>그누보드 도서 정보를 OpenBiblio로 마이그레이션하기</h1>
<?php
  $qry = new Query();
  $sql = $qry->mkSQL("SELECT * FROM g4_write_library WHERE wr_is_comment = 0");
  if (!$qry->_query($sql, "원본 자료 검색 실패")) {
     exit;
  }
  $rowCount = $qry->_conn->numRows();
  echo "총 $rowCount"."건 대상<br>\n";
  while (($row= $qry->_conn->fetchRow()) !== false) {
    echo ($row[wr_subject]."<br>\n");
  }


include("../shared/footer.php"); 
?> 
위의 코드를 살펴보면 OpenBiblio 패키지에서 사용하는 공통 모듈을 그대로 사용한 구조로 원본 데이터의 정보가 정상적으로 검색되는지 확인하는 내용이다. 중요한 것은 이코드를 "openbiblio/home" 디렉토리에 위치시켜야 하는 점이다.
DB 쿼리용 함수를 모아놓은 Query 클래스를 그대로 사용했으며, echo  $row[wr_subject] 부분에 biblio, biblio_copy, biblio_field 테이블에 대한 INSERT 구분만 적절하게 넣으면 마이그레이션 프로그램은 완성되는 것이다.
공통 헤더와 푸터를 사용한 구조이며 실행후 화면은 아래와 같다.



 
 
아래의 그림은 biblio, biblio_copy, biblio_field 테이블을 INSERT 하는 구문을 추가한 다음 목록이 정상적으로 입력되었는지 확인한 것이다.


 


(주)동운시스템 전화 041-358-3760

동운북스 소개 바로가기
[온라인 문의 및 견적요청]

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함