將機讀格式與館藏資料匯入 KOHA
將目前系統中的書目資料匯入 Koha 不是一件容易的事情。主要是因為系統不一樣,對 MARC 的處理也不一樣!這篇文章是自己轉換的過程也希望幫助大家將資料轉到 Koha 上去的。
Koha 大致做法是:
先新增書目資料,用 addbiblio.pl 將 MARC 資料寫正確,輸入到資料庫。再輸入館藏資料,利用 additem.pl 將 995 段補齊,995 段是用來記錄館藏資料的。在將館藏資料輸入資料庫庫相關欄位。 執行完 addbiblio.pl 之後,會將 MARC 資料寫入到 biblio, biblioitems, marc_biblio, marc_subfield_table, marc_word 等表格。 執行完 additem.pl 之後,會輸入 MARC 995 段的資料到 marc_subfield_table, marc_word,再把部份館藏相關的資料輸入到 items 這個表格。
執行順序是:
1. 先檢查 marc_breeding 是否有資料
marc_breeding 的資料通常來自 Z3950 或是 使用者自行上傳的資料
- 如果有就會取出書目資料,匯入到編目的介面,供館員修改。
- 沒有的話可以從 Z3950 搜尋 或是 原編
- 如果從 Z3950 找到資料,會匯入到 marc_breeding,同時將資料自動輸入到編目介面,讓館員編目。
- 如果找不到就要進入原編,自行編目
以上動作大多是 addbiblio.pl 在處理的,包括欄位的增加、刪除、重複書目的判斷、新增書目、修改書目、刪除書目等。 z3950 的動作是在 z3950/search.pl 完成,這邊中文社群有很大的貢獻,包括 CCCII, BIG5 轉 UTF8 等,許多程式都是 Long_sam, Alex, Mao 等完成的。
2. 新增館藏
書目資料新增完成之後,會自動帶到新增館藏的介面,讓館員輸入 995 段的館藏資料。 這邊的動作都是在程式 additem.pl 完成,包括複本的增加、館藏的增加、修改、刪除等。
模擬 Koha 作法自動匯入所有資料
- 先將資料從 big5 轉到 utf8
不能只轉字碼,MARC 中定義到的 Leader 與 各欄位長度都要修改。 - 轉換欄位
KOHA 以 995 段來記錄館藏資料。所以我需要將原先的欄位調整一下將許多 805 段轉到 995 段。如果不想以 995 來記錄,需要調整資料庫甚至要修改部份程式碼。 - 匯入 MARC 到 Koha 的資源庫(marc_breeding)
儲存 MARC 資料,有暫存的意味,還沒有真正將 MARC 與館藏匯入。 - 從 Koha 資源庫將所有 MARC 與館藏匯入 Koha
實作範例
Step 0. 準備工作
主要有三點:1. 匯出 MARC、2. 轉換欄位、3. 調整 Koha 與 Marc 連結
- 先從原本系統匯出機讀格式,請確認自己系統的:
- MARC 格式是否符合標準 ISO2709 格式
- 字元編碼,以中文來說常見的有 CCCII, BIG5, UTF8
- 確認 MARC 資料與館藏資料正確性
- 確認 MARC 格式,CMARC or UNIMARC or MARC21 等,版本大致為何
完成以上工作之後,原則上就會有一個檔案我這邊舉例檔名為 Orig_Bib.mrc,就是我的館藏的資料。這個檔案是ISO2709格式、BIG5 字元編碼、資料正確共有 500 筆 CMARC。
- 了解自己 MARC 格式中到底記錄了哪些欄位。這是為了將既有的格式轉換為 Koha 內的 MARC 格式,讓他們欄位相通。可以用 marc_get_tag.pl 來取得欄位、分欄使用的情形。例如我的 Orig.mrc 節錄部份容為
805a = 585 805d = 585 805n = 5 805p = 585 805z = 585 805f = 585 805c = 585 805m = 585 805t = 585
得知 805 段的部份資料,其中有使用到 分欄a 的次數為 585 次,在總共 500 筆資料卻有 585 個,表示有一些是複本。
但是這邊使用的 805 整個大段在 Koha 中是用 995 來記錄的,所以我們需要轉換欄位。先準備一個純文字檔 tag_convert.txt 內容如下805a,995a 805b,995b 805c,995d 805f,995f 805t,995t 805z,995z 805m,995m 805l,995v 809d,681a 809e,681b 809p,990a 805d+805e,995e
以","區分為需要轉換的欄位分欄,如第一筆為 "805a,905a" ,表示我要將資料中的 805a 轉換成 905a。最後一筆 "805d+805e,995e" 表示將805 與 805e 合併到 995e。儲存 tag_convert.txt,後續程式將根據此檔幫你轉換MARC資料。 - 最後就是到 Koha 的系統管理,確認 Koha 與 Marc 之間的連結
Step 1. 先將資料從 big5 轉到 utf8
這邊的 Orig.mrc 是 big5 的編碼,但是 Koha 卻是 UTF8 的編碼,兩者並不相容。我寫了一個小程式 marc_big5toutf8.pl 來轉換編碼與Leader。
執行:marc_big5toutf8.pl Orig.mrc > Orig_UTF8.mrc 結果:Orig_UTF8.mrc 就是以 UTF8編碼正確的 ISO2709 檔案
Step 2. 轉換欄位
將 Orig_UTF8.mrc 中的欄位轉換成與 Koha 一樣的欄位。一樣寫了一隻程式來操作 marc_tag_convert.pl。
執行:marc_tag_convert.pl Orig_UTF8.mrc tar_convert.txt > Koha.mrc 結果:koha.mrc 裡面的資料舊式用來準備匯入 KOHA 的原始資料了。
Step 3. 匯入 MARC 到 Koha 的資源庫(marc_breeding)
將 koha.mrc 上傳到 Koha 的資源庫。
使用瀏覽器開啟網頁,進入 Koha 的館員介面,點選KOHA 管理,點選匯入。
選擇檔案:選取剛剛的 Koha.mrc
匯入名稱:輸入 Koha_mrc,記得要輸入這個名稱,後面用到。
字元編碼:這邊是翻譯錯誤,因為應該選擇的是 MARC 格式,CMARC 與 UNIMARC 都選 UNIMARC,USMARC 與 MARC21 都選 MARC21
最後看情況決定是否覆蓋重覆資料。
Step 4. (Koha2 only) 從 Koha 資源庫將所有 MARC 與館藏匯入 Koha
先登入 Koha 的主機,取得 root 權限。
先備份 KOHA 資料庫,避免造成錯誤無法回復資料。
執行 mysqldump -u xxx -p Koha > Koha.sql
因為這邊要使用到 koha 寫好的 modules,搭配自己開發的 import_biblio_items.pl 來進行最後的匯入步驟。
執行 export PERL5LIB = /usr/local/koha/intranet/modules
利用寫好的 import_biblio_items.pl 來將剛剛上傳的 koha_mrc 的資料,匯入到 Koha 書目資料表與館藏記錄。如果沒有錯誤就完成了!
執行 import_biblio_items.pl koha_mrc
