[Koha-cvs] CVS: koha-doc/en/sysadmin/migration migrating_to_koha.html,NONE,1.1 migrating_to_koha.xml,NONE,1.1

skemotah shedges at users.sourceforge.net
Tue Nov 9 02:30:40 CET 2004


Update of /cvsroot/koha/koha-doc/en/sysadmin/migration
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25216

Added Files:
	migrating_to_koha.html migrating_to_koha.xml 
Log Message:
Load Migrating to Koha guide

--- NEW FILE ---
<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Migrating to Koha ver. 2.0.0</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.65.1"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="article" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="d0e1"></a>Migrating to Koha ver. 2.0.0</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Stephen</span> <span class="surname">Hedges</span></h3><tt class="email">&lt;<a href="mailto:shedges AT skemotah.com">shedges AT skemotah.com</a>&gt;</tt></div></div><div><div class="revhistory"><table border="1" width="100%" summary="Revision history"><tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr><tr><td align="left">Revision 2.0.0</td><td align="left">2004-11-08</td><td align="left">sh</td></tr><tr><td align="left" colspan="3"><p>Initial XML markup of HTML document</p></td></tr></table><
 /div></div></div><div></div><hr></div><div class="toc"><dl><dt><span class="section"><a href="#d0e28">1. Copyright and License</a></span></dt><dt><span class="section"><a href="#d0e44">2. Disclaimer</a></span></dt><dt><span class="section"><a href="#d0e51">3. Introduction</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e54">3.1. What is Koha?</a></span></dt><dt><span class="section"><a href="#d0e96">3.2. Why Change to Koha?</a></span></dt></dl></dd><dt><span class="section"><a href="#d0e112">4. Preparations</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e115">4.1. Prerequisites</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e150">4.1.1. Item Types</a></span></dt><dt><span class="section"><a href="#d0e173">4.1.2. MARC tag structure</a></span></dt></dl></dd></dl></dd><dt><span class="section"><a href="#d0e247">5. Extracting and Loading the Data</a></span></dt><dd><dl><dt><span class="section"><a href="#d0e266">5.1. Bibliographic Records
 </a></span></dt><dt><span class="section"><a href="#d0e406">5.2. User Information</a></span></dt><dt><span class="section"><a href="#d0e755">5.3. Transaction Records</a></span></dt><dt><span class="section"><a href="#d0e919">5.4. Additional Documentation</a></span></dt></dl></dd></dl></div><font color="red">&lt;authorblurb&gt;<p>By Stephen Hedges, Skemotah Solutions</p>&lt;/authorblurb&gt;</font><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e28"></a>1.&nbsp;Copyright and License</h2></div></div><div></div></div><p>This document, <span class="emphasis"><em>Migrating to Koha ver. 2.0.0</em></span>, is copyrighted (c) 2004 by <span class="emphasis"><em>Stephen Hedges</em></span> of <a href="http://www.skemotah.com" target="_top">Skemotah Solutions</a>. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version publ
 ished by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is available at <a href="http://www.gnu.org/copyleft/fdl.html" target="_top">http://www.gnu.org/copyleft/fdl.html</a></p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e44"></a>2.&nbsp;Disclaimer</h2></div></div><div></div></div><p>No liability for the contents of this document can be accepted. Use the concepts, examples and information at your own risk. There may be errors and inaccuracies, that could be damaging to your system. Proceed with caution, and although this is highly unlikely, the author(s) do not take any responsibility.</p><p>All copyrights are held by their by their respective owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark. Naming of par
 ticular products or brands should not be seen as endorsements.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e51"></a>3.&nbsp;Introduction</h2></div></div><div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e54"></a>3.1.&nbsp;What is Koha?</h3></div></div><div></div></div><p>Koha version 2.0.0 is an open source integrated library system (ILS) for automating a lending library. It has all of the basic features needed to run a library, handling:</p><div class="itemizedlist"><ul type="disc"><li><p>an online public access catalog (OPAC) of the library's holdings;</p></li><li><p>a database of library users;</p></li><li><p>issuing books to borrowers and returning books to the collection;</p></li><li><p>borrower requests for library items;</p></li><li><p>orders from vendors;</p></li><li><p>book budgets;</p></li><li><p>transfers between library branche
 s;</p><p>and most other functions associated with operating a lending library.</p></li></ul></div><p>Koha ver.2.0.0 supports MARC21 and UNIMARC bibliographic records. While there are still a few ILS products that use their own format for storing bibliographic data, most commercial products have adopted some version of the venerable MARC (MAchine Readable Cataloging) record standard. Beginning with version 2.0.0, Koha supports MARC records, specifically records following the <a href="http://www.loc.gov/marc/" target="_top">MARC21</a> and <a href="http://www.ifla.org/VI/3/p1996-1/sec-uni.htm" target="_top">UNIMARC</a> standards.</p><p>Koha is currently in use in several small to medium size libraries with as many as 130,000 bibliographic records and 40,000 borrower records. &nbsp;At the time of this writing (early 2004), it lacks support for Library of Congress classification, using the Dewey Decimal System instead, meaning that it is best-suited for schools and public librari
 es. &nbsp;The current code is maintained on <a href="http://sourceforge.net/projects/koha" target="_top">Sourceforge</a>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e96"></a>3.2.&nbsp;Why Change to Koha?</h3></div></div><div></div></div><p>The main attraction of Koha is that it is free, since it is open source software. &nbsp;It is best to think of it as "free to change" however, rather than "free of cost" &nbsp;It is possible to set up a functioning Koha system without spending any money, but you will still spend more time on the implementation than you would with a commercial ILS (where you are paying the software vendor to set it up for you), and you will need to have a pretty fair knowledge of web server software (usually <a href="http://www.apache.org/" target="_top">Apache</a>) and the <a href="http://www.perl.org/" target="_top">Perl</a> programming language in order to configure some parts of Koha.&nbsp; Some
  knowledge of <a href="http://www.mysql.com/" target="_top">MySQL</a> is also handy for database maintenance chores. &nbsp;Most libraries should probably plan on investing time, training, and some money before they have Koha up and running. &nbsp;That being said, Koha is still much less expensive than commercial library software, especially when you consider that there are no annual license fees.</p><p>The best reason to migrate from a commercial system to Koha is the fact that you will have complete control over your library software. &nbsp;Because the entire source code is open, a library can modify Koha to do things as the library wants them done. &nbsp;Commercial systems must aim their research and development for the "middle of the market," where most of their business can be found. &nbsp;But a library that wants to surpass the capabilities of most other libraries will find that Koha provides the freedom to try boldly imaginative innovations in library service.</p></div
 ></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e112"></a>4.&nbsp;Preparations</h2></div></div><div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e115"></a>4.1.&nbsp;Prerequisites</h3></div></div><div></div></div><p>This document assumes that you have already installed a Koha system and have an existing ILS, and now wish to transfer your data from the old system to Koha. &nbsp;There are no instructions in this document, therefore, for installing and configuring the basic Koha parameters.&nbsp; (The most recent instruction set should be available at <a href="http://www.koha.org/manual" target="_top">koha.org/manual</a>.&nbsp; There is also a very good guide for installing Koha on Debian available from <a href="http://kados.org/LibraryScience/installing_koha.html" target="_top">Joshua Ferraro</a>.)&nbsp; Nor are there any instructions for entering 
 new data or using Koha's Z39.50 client to retrieve MARC records from a Z39.50 server. &nbsp;If you are planning to build such "new" data instead of transferring data from an existing system, however, parts of this document will still be helpful in explaining how Koha stores bibliographic and patron data.</p><p>Once you have installed the software and are able to run it, you will need to set up your system parameters on the administration page (<tt class="filename">cgi-bin/koha/admin-home.pl</tt>). &nbsp;Some of these, such as the book funds and budget, currencies, authorized values, etc., can be done if and when you choose to use those features of Koha. &nbsp;Others need to be done before you can import data into Koha and use it. &nbsp;These essential parameters are:</p><div class="itemizedlist"><ul type="disc"><li><p>Item types;</p></li><li><p>MARC tag structure (and Koha to MARC links);</p></li><li><p>Library branches;</p></li><li><p>Borrower categories;</p></li><li><p>Sto
 p words; and</p></li><li><p>System preferences.</p></li></ul></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e150"></a>4.1.1.&nbsp;Item Types</h4></div></div><div></div></div><p>The item types are the "categories" into which your library items fall. &nbsp;For instance, you probably want to have videocassettes in a different category from non-fiction books, and mysteries in a different category from children's picture books. &nbsp;If you already are using a commercial ILS, you almost certainly already have all of your materials divided up into such categories. &nbsp;Now you need to tell Koha what your categories are.</p><p>This is more important than it sounds. &nbsp;Much of Koha simply does not work right unless your item types are defined and every item has some type designated. &nbsp;Small things like loan periods and item counts become big headaches if you haven't set up your item types. &nbsp;There's good reason for this
  being at the top of the Koha parameters page!</p><p>As you add item types to Koha, you should be aware that the type code is limited to four characters. &nbsp;This code is rarely displayed by Koha; instead the description of the type will be what users see. &nbsp;Loan length is specified as a number of (calendar) days and the rental charge is just what it sounds like, any amount you might charge to users for borrowing items of a certain type (like videos).</p><p>Renewals allowed is a yes/no question on the administration page (check the box if items of this type can be renewed). &nbsp;What actually happens when the item type is saved is that a number is saved in the <tt class="varname">renewalsallowed</tt> column in the <tt class="varname">itemtypes</tt> table of the Koha MySQL database: &nbsp;yes=1 and no=0. &nbsp;But this number is also used by the code to determine how many times an item can be renewed. &nbsp;If your library allows items to be renewed more than once, the
 n you will have to manually edit the <tt class="varname">itemtypes</tt> table to reflect this. &nbsp;For example, if you allow some item types to be renewed twice, you need to manually change the value of <tt class="varname">renewalsallowed</tt> from 1 to 2.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h4 class="title"><a name="d0e173"></a>4.1.2.&nbsp;MARC tag structure</h4></div></div><div></div></div><p>Koha allows you to specify which MARC tags you want to use and which you want to ignore. &nbsp;When you downloaded and installed Koha, you also got the entire list of MARC21 tags and subfields in current use. &nbsp;Now you need to use the administration page to edit this list and tell Koha which tags you want to use and how you want to use them, or modify the tags to conform to UNIMARC standards.</p><p>If you are CERTAIN that you will never use a MARC tag, then you can delete it, but since this will not result in any appreciable improvement in p
 erformance, it is probably better to leave it. &nbsp;There will be tags you want to add, however. &nbsp;If you are using older MARC tags that are not in the list of tags supplied with Koha, then use the MARC tag structure administration page (<tt class="filename">cgi-bin/koha/admin/marctagstructure.pl</tt>) to add them. &nbsp;Similarly, you will probably need to add the holdings tag you currently use, or at least check the subfield structure of the 852 tag if you use it for holdings.</p><p>Editing the subfields from the MARC tag structure page is very important (<tt class="filename">cgi-bin/koha/admin/marc_subfields_structure.pl</tt>). &nbsp;It is also a very time-consuming process, but one that is absolutely necessary if you want your Koha installation to behave as intended. &nbsp;As an ilustration, here is a possible subfield structure for the 245 "title statement" tag:</p><pre class="programlisting">SELECT tagsubfield,kohafield,tab FROM marc_subfield_structure WHERE tagfi
 eld=245;
+-------------+-------------------------+------+
| tagsubfield | kohafield&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | tab&nbsp; |
+-------------+-------------------------+------+
| 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; -1 |
| 8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; -1 |
| a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | biblio.title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | bibliosubtitle.subtitle |&nbsp;&nbsp;&nbsp; 1 |
| c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; -1 |
| g&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; -1 |
| h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | biblio.abstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| k&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; -1 |
| n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| s&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; -1 |
+-------------+-------------------------+------+</pre><p>To focus on the important information, the query above does not show the "lib for librarians" and "lib for OPAC" values (what the librarian or OPAC user will see as the subfield description) or the repeatable and mandatory values (always either yes or no, represented by 1 or 0 in the database). &nbsp;The standard MARC21 subfield descriptions and repeatabilty are supplied with Koha, and if you require that <span class="emphasis"><em>every one</em></span> of your MARC records have a particular subfield, then you should set that subfield to mandatory.</p><p>The "non-standard" information here is the Koha field and the tab. &nbsp;The <tt class="varname">kohafield</tt> column holds any mapping between the MARC tables in the database and the original Koha tables. &nbsp;MARC records are capable of holding much more information than the original, non-MARC Koha tables. &nbsp;For standard searching and display of brief bibliograp
 hic information, however, the original Koha tables are usually adequate. &nbsp;Therefore, instead of rewriting most of the scripts and modules in Koha version 1.9 to make the MARC-compatible version 2.0, the developers set up a separate table (<tt class="varname">marc_subfield_value</tt>) to hold the MARC record data, and linked that data to the original Koha tables, so the original scripts and modules could still be used.</p><p>In the example above, the 245a MARC tag and subfield is linked (mapped) to the title column in the original Koha <tt class="varname">biblio</tt> table, and the 245b tag is linked to the <tt class="varname">subtitle</tt> column in the <tt class="varname">bibliosubtitle</tt> table. &nbsp;This means that every time a new MARC record is loaded into the database, any information that is in the 245a tag is also stored in a corresponding record in the <tt class="varname">biblio</tt> table, and anything in the 245b tag also gets stored in the <tt class="varn
 ame">bibliosubtitle</tt> table.</p><p>We just said that the original Koha tables are "usually adequate" for storing enough bibliographic information to construct brief displays. &nbsp;In the example above, however, you can see a "work-around" for an instance in which the Koha tables were not adequate. &nbsp;In the particular installation of Koha from which this example was taken, it was decided that it was important to store the 245h "material designation" tag in the original Koha tables so it could be displayed in the first list of results of any search. &nbsp; The material designation would tell the searcher if the bibliographic item shown was something other than a book, such as a sound recording or a videorecording. Since there was no &nbsp;other place to store this information, an otherwise unused Koha column was selected &nbsp;(the abstract column in the biblio table), and the templates that build the &nbsp;search results displays were altered accordingly. &nbsp; (As w
 ith Perl, with Koha there is always more than one way to do things!)</p><p>Once you have decided which &nbsp;MARC subfields to map to Koha columns, don't use the MARC tag structure page to do it. &nbsp;While it is possible to do it here, Koha has a separate <span class="bold"><b>Links Koha-MARC DB</b></span> page (<tt class="filename">cgi-bin/koha/admin/koha2marclinks.pl</tt>) that you can access from the parameters page (<tt class="filename">admin-home.pl</tt>). &nbsp;This interface is a much easier and safer way to set up your MARC to Koha mapping.</p><p>The tab column holds either a -1 or a number from 0 to 10. &nbsp;"Tab" is used here in the sense of a tab in a web browser, not a tab in a text processor. &nbsp;It controls how MARC tags and subfields are grouped and displayed when the librarian or cataloger is working with the MARC records. &nbsp;Any tags and subfields that you want to have available for editing or displaying in the MARC display pages need to have a value
  between 0 and 9. &nbsp;A -1 value means the subfield is ignored when building such pages. &nbsp;While you could give all the other subfields (with the exception of subfields in your item information tag) the same value, all these subfields, whether empty or not, would display every time you wanted to edit or display your MARC record, making a very long web page! &nbsp;It is best to subdivide your MARC tags and subfields into logical groups that are then displayed on separate pages in their own "tabs." &nbsp;Here are a couple of examples to illustrate one way to do this:</p><pre class="programlisting">SELECT tagfield,tagsubfield,tab FROM marc_subfield_structure WHERE tab=0;
+----------+-------------+------+
| tagfield | tagsubfield | tab&nbsp; |
+----------+-------------+------+
| 010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 020&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 022&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 028&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 028&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 035&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 082&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 082&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
| 110&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 0 |
+----------+-------------+------+

SELECT tagfield,tagsubfield,tab FROM marc_subfield_structure WHERE tab=1;
+----------+-------------+------+
| tagfield | tagsubfield | tab&nbsp; |
+----------+-------------+------+
| 245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | p&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 246&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 246&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 246&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 260&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 260&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 260&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | e&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | g&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 440&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 440&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 440&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 490&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | x&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 490&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | v&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
| 490&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | a&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 1 |
+----------+-------------+------+</pre><p>...and so forth. &nbsp;The tab value 10 is reserved for the item information from your holdings tag subfield, since this information is always displayed on a separate page when editing or displaying MARC records.</p><p>There's one other chore you need to take care of before you are ready to load data, and that is checking to make sure the <tt class="varname">barcode</tt> column in the items table is big enough to hold your barcodes.&nbsp; If your barcodes are longer than the space allowed, you will need to <a href="http://dev.mysql.com/doc/mysql/en/ALTER_TABLE.html" target="_top">alter</a> the items table accordingly.</p></div></div></div><div class="section" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e247"></a>5.&nbsp;Extracting and Loading the Data</h2></div></div><div></div></div><p>Obviously, if you have an existing ILS, you have a lot of valuable data that you have collected that y
 ou will want to transfer into Koha. &nbsp;This process may be the most complex and costly part of migrating to Koha, and is unfortunately an area where this document will be of relatively little help. &nbsp;Each vendor's product handles data differently, with variations in database structure, database software, and exporting tools. &nbsp;You may well find that you will need top pay your current vendor to prepare your data for export, with no recourse to any other solution because their software source code is closed and proprietary.</p><p>Still, there are a few general comments about data extraction that will be helpful in planning and negotiating the process of exporting your data.</p><p>There are basically three types of data you will want to retrieve from your old system:</p><div class="itemizedlist"><ul type="disc"><li><p>bibliographic records;</p></li><li><p>user information; and</p></li><li><p>transaction records.</p></li></ul></div><div class="section" lang="en"><div 
 class="titlepage"><div><div><h3 class="title"><a name="d0e266"></a>5.1.&nbsp;Bibliographic Records</h3></div></div><div></div></div><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Since it is assumed that you are already using a commercial ILS and are migrating to the most current version of Koha, the following remarks pertain to preparing existing MARC records for import into Koha.</p></div><p>Koha version 2.0.0 makes extensive use of the <a href="http://marcpm.sourceforge.net/" target="_top">MARC::Record</a> Perl package for reading, checking, and processing records for import. &nbsp;This collection of Perl modules is designed to work with MARC data in transmission format, more accurately "ISO 2709 exchange format," which is the MARC data in a format that's easy for computers to pass back and forth, though not so easy for humans to read. &nbsp;As the name "ISO 2709" implies, this is an international standard for formating bi
 bliographic records; your current ILS vendor should have tools available to export your bibliographic records in ISO 2709 format (or you should demand to know why they are not conforming to international standards!). &nbsp;Getting your records -- your complete records, including holdings information -- in ISO 2709 format is the essential first step in importing your bibliographic information into Koha. &nbsp;If for some strange reason your current ILS is incapable of dumping records in ISO 2709 format, but can do ASCII or some other widely recognized format, you may be lucky enough to be able to use some of the <a href="http://www.loc.gov/marc/marctools.html" target="_top">tools</a> listed by the Library of Congress for manipulating MARC records and do the conversion to ISO 2709 yourself. &nbsp;Most likely, however, you will find that your vendor can supply the tools you need for exporting your records in the standard exchange format, though they may ask for a fee before pro
 viding them.</p><p>Once you have your records in ISO 2709 format, you will work from a command line on your Koha server and run the <tt class="filename">bulkmarcimport.pl</tt> script that comes with Koha to load your records. &nbsp;The command to use is: &nbsp; <b class="userinput"><tt>KohaFolder/intranet/scripts/misc/bulkmarcimport.pl -file YourISO2709fileName</tt></b> -- where <tt class="filename">KohaFolder</tt> is the name of the directory or folder where you installed Koha (such as <tt class="filename">/usr/local/koha</tt>) and <tt class="filename">YourISO2709fileName</tt> is the name (and location) of the file of MARC records dumped from your old ILS.</p><p>If you intend to make any changes to the structure of your MARC records (for example, you want to change your holdings tag structure), this should be done before you import the records. &nbsp;Again, the Library of Congress tools may be helpful. &nbsp;If you are reasonably adept at Perl programming, or are willing to
  pay a small fee to someone who is, you can also use the MARC::Record Perl package to rebuild your records. &nbsp;Either way, the point is the same: &nbsp;make any changes <span class="emphasis"><em>before</em></span> you import your records, by making changes to the ISO 2709 file itself.</p><p>The <tt class="filename">bulkmarcimport.pl</tt> script is also a handy place to start if you want to write a script to import records on a regular basis. &nbsp;This might be the case if you use a different utility to generate new MARC records and then do regular imports of those records into Koha. &nbsp;Because of differences between MARC records and Koha records, you will find that some pieces of information do not import cleanly with the 'plain' <tt class="filename">bulkmarcimport.pl</tt> utility. &nbsp;For example, MARC publication dates often have a 'c' (for 'copyright') in front, so <tt class="filename">bulkmarcimport.pl</tt> will place 'c1999' in the Koha publication date column
  in the database. &nbsp;(This is assuming that you have mapped MARC tag 260c to <tt class="varname">biblioitems.publicationyear</tt>.) &nbsp;Koha can select catalog records by publication year, but only if the publication year is a number, so entries like 'c1999' would not be selected. &nbsp;While it is easy enough to correct this after the initial import of your records by using the MySQL <a href="http://dev.mysql.com/doc/mysql/en/String_functions.html" target="_top">TRIM</a> function, you won't want to be doing this kind of 'clean-up' work on a regular basis, when you can modify the <tt class="filename">bulkmarcimport.pl</tt> script to do it when the records are loaded.</p><p>As of this writing, the Koha import process does not handle multiple subject entries very well. &nbsp;In general, while a MARC record may have many subject entries, only one currently gets loaded into the Koha subjects table (<tt class="varname">bibliosubject</tt>). &nbsp;Again, this can be remedied b
 y modifying the <tt class="filename">bulkmarcimport.pl</tt> script if you are good at Perl. &nbsp;(Or, at the risk of being repetitious, you are willing to hire someone who is.)</p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Since this document was first written, newer versions of Koha have been released which do catalog searches directly against the MARC record, instead of the old Koha tables, so loading of data into the subjects table is less important.</p></div><p>If you are getting ready to do some complex things with your records, you need to know a little about Koha's database tables for storing records:</p><pre class="programlisting">+-------------------------+
| Bibliographic Tables&nbsp;&nbsp;&nbsp; |
+-------------------------+
| additionalauthors&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| biblio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| biblioanalysis&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| biblioitems&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| bibliosubject&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| bibliosubtitle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| bibliothesaurus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| catalogueentry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| deletedbiblio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| deletedbiblioitems&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| deleteditems&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| items&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| itemsprices&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| marc_biblio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| marc_blob_subfield&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| marc_subfield_table&nbsp;&nbsp;&nbsp;&nbsp; |
| marc_word&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
+-------------------------+</pre><p>Many of the table names are self-explanatory, but some are not. &nbsp;The three primary 'old-Koha' tables are; &nbsp;<tt class="varname">biblio</tt>, which holds the basic bibliographic information such as title, author, etc.; <tt class="varname">biblioitems</tt>, which holds more specific information such as format, publication year, item type, etc.; and <tt class="varname">items</tt>, which holds information about specific items, such as barcode number, price, date acquired, etc. &nbsp;These three tables are linked together by a common '<tt class="varname">biblionumber</tt>.' &nbsp;You may have a <tt class="varname">biblio</tt> entry for <i class="citetitle">The Two Towers</i>, several <tt class="varname">biblioitems</tt> entries that link to it (perhaps one for the book, one for the audio recording, one for the large print edition), and multiple <tt class="varname">items</tt> (copies) for each biblioitem. &nbsp;This structure mirrors som
 e aspects of the International Federation of Library Associations' Functional Requirements for Bibliographic Records (<a href="http://www.ifla.org/VII/s13/frbr/frbr.htm" target="_top">FRBR</a>).</p><p>MARC records do not have such a structure, but instead have a basic record, which would contain the information that Koha would keep in the <tt class="varname">biblio</tt> and <tt class="varname">biblioitems</tt> tables, and a holdings tag, which would contain the information in Koha's <tt class="varname">items </tt>table. &nbsp;Koha stores MARC records in the <tt class="varname">marc_subfield_table</tt> table, which breaks the record down into tags and subfields and then links everything back together using a single '<tt class="varname">bibid</tt>' for all the pieces. &nbsp;The <tt class="varname">marc_biblio</tt> table keeps track of the relationship between the <tt class="varname">bibid</tt> of the MARC record and the <tt class="varname">biblionumber</tt> of the correspondin
 g information that has been stored in the old-Koha tables.</p><p>There are also two general "keyword" tables that serve somewhat as indexes, storing each word in a record with the <tt class="varname">biblionumber</tt> or <tt class="varname">bibid</tt> of the record it came from. &nbsp;For items cataloged using the old-Koha interface, these words are stored in <tt class="varname">catalogueentry</tt>, while words from MARC records (either imported or cataloged using the MARC interface) are stored in <tt class="varname">marc_word</tt>.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e406"></a>5.2.&nbsp;User Information</h3></div></div><div></div></div><p>Unlike bibliographic records, there is as yet no commonly used standard for user records, though the relatively new <a href="http://www.niso.org/committees/committee_at.html" target="_top">NCIP</a> standard addresses some aspects of user information and may become as widespr
 ead as MARC records someday. &nbsp;Meanwhile, this is an area where you will have to dig out as much information as possible from your existing database, using whatever means possible. &nbsp;If you are fortunate enough to have some sort of export utility with you current ILS, you just need to determine that it exports all the data you want. &nbsp;Most likely, however, you have no such utility and will have to either access your database directly and dump the data you need (if possible) or ask your current vendor to do it for you. &nbsp;In any case, you will want to retrieve the following information about your users:</p><div class="itemizedlist"><ul type="disc"><li><p>names (first names, last name, and perhaps title);</p></li><li><p>library card number;</p></li><li><p>user ID (if different from library card number);</p></li><li><p>street address;</p></li><li><p>mailing address, or any other alternate address you might have on file;</p></li><li><p>date of birth (if available)
 ;</p></li><li><p>telephone number;</p></li><li><p>user category code (e.g. 'A' for adult);</p></li><li><p>date enrolled (if available);</p></li><li><p>branch where enrolled (if available);</p></li><li><p>any status codes (e.g. blocked, bad address, etc.);</p></li><li><p>user password (if available in plain text);</p></li><li><p>preferred method of contact (if available);</p></li><li><p>any notes.</p></li></ul></div><p>This information will then need to be loaded into the Koha <tt class="varname">borrowers</tt> table. &nbsp;The columns in this table are a little confusing, since the table has been expanded at various times to accomodate the needs of libraries needing to store more information and therefore needing more columns in the table. &nbsp;Here is the current table structure, with some notes on what the columns can contain:</p><pre class="programlisting">SHOW COLUMNS FROM borrowers;
+------------------+--------------+------+-----+---------+----------------+
| Field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Null | Key | Default | Extra&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
+------------------+--------------+------+-----+---------+----------------+
| borrowernumber&nbsp;&nbsp; | int(11)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | MUL | NULL&nbsp;&nbsp;&nbsp; | auto_increment |
| cardnumber&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(9)&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | MUL |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| surname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| firstname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| title&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| othernames&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| initials&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| streetaddress&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| suburb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| city&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| phone&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| emailaddress&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| faxnumber&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| textmessaging&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| altstreetaddress | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| altsuburb&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| altcity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| altphone&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| dateofbirth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| branchcode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(4)&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| categorycode&nbsp;&nbsp;&nbsp;&nbsp; | char(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| dateenrolled&nbsp;&nbsp;&nbsp;&nbsp; | date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| gonenoaddress&nbsp;&nbsp;&nbsp; | tinyint(1)&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| lost&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | tinyint(1)&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| debarred&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | tinyint(1)&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| studentnumber&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| school&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| contactname&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| borrowernotes&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| guarantor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | int(11)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| area&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | char(2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| ethnicity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(50)&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| ethnotes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(255) | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| sex&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | char(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| expiry&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| altnotes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(255) | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| altrelationship&nbsp; | varchar(100) | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| streetcity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | text&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| phoneday&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(50)&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| preferredcont&nbsp;&nbsp;&nbsp; | char(1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| physstreet&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(100) | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| homezipcode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(25)&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| zipcode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(25)&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| userid&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(30)&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| password&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | varchar(30)&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
| flags&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | int(11)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | YES&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp; | NULL&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |
+------------------+--------------+------+-----+---------+----------------+</pre><div class="variablelist"><dl><dt><span class="term">borrowernumber</span></dt><dd><p>This value is automatically generated when a patron is added. &nbsp;To add patrons in bulk, however, you may need to generate this number manually. &nbsp;For instance, if you put your patron information into a comma-delimited file and use MySQL's "LOAD DATA INFILE" command to load your data (a very fast operation!), the first comma-delimited field should contain a unique borrowernumber, preferably sequential.</p></dd><dt><span class="term">cardnumber</span></dt><dd><p>the user's library card "number." &nbsp;It does not actually need to be a number.</p></dd><dt><span class="term">surname</span></dt><dd><p>the user's family name</p></dd><dt><span class="term">firstname</span></dt><dd><p>can actually be as many "first" names as necessary</p></dd><dt><span class="term">title</span></dt><dd><p>e.g. "Mr."</p></dd><dt>
 <span class="term">othernames</span></dt><dd><p>names after the first name can be put here instead of in firstname</p></dd><dt><span class="term">initials</span></dt><dd><p>the person's initials, e.g. 'John Doe' = 'JD'; rarely used and relatively unimportant</p></dd><dt><span class="term">streetaddress</span></dt><dd><p>actually the mailing address; see also physstreet</p></dd><dt><span class="term">suburb</span></dt><dd><p>useful in some countries</p></dd><dt><span class="term">city</span></dt><dd><p>and also the state, etc., any other info needed for the mailing address other than the postal code</p></dd><dt><span class="term">phone</span></dt><dd><p>the telephone number</p></dd><dt><span class="term">emailaddress</span></dt><dd><p>the e-mail address</p></dd><dt><span class="term">faxnumber</span></dt><dd><p>the number of the person's fax machine</p></dd><dt><span class="term">textmessaging</span></dt><dd><p>contact information for any text messaging device</p></dd><dt><sp
 an class="term">altstreetaddress</span></dt><dd><p>street address of the person's alternate contact (contactname)</p></dd><dt><span class="term">altsuburb</span></dt><dd><p>alternate contact's suburb</p></dd><dt><span class="term">altcity</span></dt><dd><p>alternate contact's city (and state/province AND postal code)</p></dd><dt><span class="term">altphone</span></dt><dd><p>alternate contact's telephone number</p></dd><dt><span class="term">dateofbirth</span></dt><dd><p>should be entered in MySQL format (yyyy-mm-dd), Koha will convert based on your parameters setting</p></dd><dt><span class="term">branchcode</span></dt><dd><p>your code for the branch where the person enrolled</p></dd><dt><span class="term">categorycode</span></dt><dd><p>your code for the type of member; 'C' is suggested for children, since this triggers some of the guarantor options</p></dd><dt><span class="term">dateenrolled</span></dt><dd><p>the date when the person enrolled, in MySQL format (yyyy-mm-dd).<
 /p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>You should set this to '0000-00-00' if you have no enrollment date. &nbsp;Leaving it blank (NULL) leads to inaccurate dates when editing borrower records later.</p></div></dd><dt><span class="term">gonenoaddress</span></dt><dd><p>set to '1' if the person has moved without leaving a forwarding address</p></dd><dt><span class="term">lost</span></dt><dd><p>set to '1' if the person's library card has been reported lost</p></dd><dt><span class="term">debarred</span></dt><dd><p>set to '1' if the person has been "debarred" or blocked from receiving library service for excessive overdues or fines, etc.</p></dd><dt><span class="term">studentnumber</span></dt><dd><p>a student ID number, but could be used for any ID number (e.g. Social Security number in the USA)</p></dd><dt><span class="term">school</span></dt><dd><p>the student's school (for use with student number)</p></dd><dt><span c
 lass="term">contactname</span></dt><dd><p>the name of the person's alternate contact</p></dd><dt><span class="term">borrowernotes</span></dt><dd><p>any notes or messages about the person</p></dd><dt><span class="term">guarantor</span></dt><dd><p>for children, this is the borrowernumber of the adult parent or custodian</p></dd><dt><span class="term">area</span></dt><dd><p>a two-letter code set by the library to identify the service area in which the person resides (may be omitted)</p></dd><dt><span class="term">ethnicity</span></dt><dd><p>useful for libraries that are required to track service to ethnic minorities, but easily ignored</p></dd><dt><span class="term">ethnotes</span></dt><dd><p>any notes related to ethnicity</p></dd><dt><span class="term">sex</span></dt><dd><p>'M' or 'F' (male or female); 'M' is the default</p></dd><dt><span class="term">expiry</span></dt><dd><p>the date when the person's membership expires, in MySQL format (yyyy-mm-dd)</p></dd><dt><span class="t
 erm">altnotes</span></dt><dd><p>any notes or messages about the alternate contact</p></dd><dt><span class="term">altrelationship</span></dt><dd><p>the nature of the alternate contact, can be 'workplace', 'relative','friend' or 'neighbour'</p></dd><dt><span class="term">streetcity</span></dt><dd><p>goes with physstreet if the person lives in a city other than their mailing address</p></dd><dt><span class="term">phoneday</span></dt><dd><p>the daytime or "work" telephone number</p></dd><dt><span class="term">preferredcont</span></dt><dd><p>a one-letter code indicating the person's preferred contact method, e.g. 'E' for e-mail</p></dd><dt><span class="term">physstreet</span></dt><dd><p>the actual street address, if the person has a different mailing address (e.g. post office box)</p></dd><dt><span class="term">homezipcode</span></dt><dd><p>the postal code of the person's physical street address</p></dd><dt><span class="term">zipcode</span></dt><dd><p>the postal code of the perso
 n's mailing address</p></dd><dt><span class="term">userid</span></dt><dd><p>this is the username the person has chosen to use to gain access to their account through the OPAC</p></dd><dt><span class="term">password</span></dt><dd><p>this is the password the person has chosen to use to gain access to their account through the OPAC; it cannot be plain text, but must be encrypted using MD5 (md5_base64) before importing</p></dd><dt><span class="term">flags</span></dt><dd><p>these are the person's privileges, which can be set when editing their record. &nbsp;The privileges are stored as the decimal representation of a binary number, with each binary digit indicating whether the privilege is allowed ('1') or not allowed ('0'). &nbsp;Typically, you will want to give imported borrowers the privileges to borrow books and reserve books for themselves, which can be set by inserting the integer 384 in this column.</p></dd></dl></div><p>The most important pieces of information are the bo
 rrowernumber and the cardnumber (required), the person's surname and firstname, their mailing address, and the branch at which they enrolled. &nbsp;All of the other information can be useful but may be omitted without affecting Koha's operation significantly.</p><p>Probably the easiest and fastest way to load the borrower data into Koha is to use a simple Perl script or a spreadsheet utility to put the information into a comma-separated value (csv) file, with the same structure as the Koha borrowers file, and then use MySQL's <a href="http://dev.mysql.com/doc/mysql/en/LOAD_DATA.html" target="_top">LOAD DATA INFILE</a> utility to load the data. &nbsp;If using a spreadsheet utility to do this, for example, you would create a spreadsheet with a column corresponding to each column in the borrowers table, put your borrower data into these columns, and save the whole thing in csv format. &nbsp;If you used "borrowers.csv" for the name of this file, you would then go into MySQL and 
 do: <b class="userinput"><tt>mysql&gt; LOAD DATA INFILE "borrowers.csv" INTO TABLE borrowers FIELDS TERMINATED BY ',' ENCLOSED BY '"';</tt></b></p><p>This process is fast, loading tens of thousands of borrower records in only a couple of seconds.</p></div><div class="section" lang="en"><div class="titlepage"><div><div><h3 class="title"><a name="d0e755"></a>5.3.&nbsp;Transaction Records</h3></div></div><div></div></div><p>Obviously, once you have loaded your bibliographic records and your borrower records, you need to know which borrowers have borrowed which items, which borrowers have reserves on which items, which borrowers owe fines for which items, etc. In other words, you need your transaction records, which relate your books to your borrowers.</p><p>As with borrower records, you will have to dig out as much information as possible from your existing database, using whatever means possible. Most likely, you will have to either access your database directly and dump the d
 ata you need (if possible) or ask your current vendor to do it for you. In any case, you will probably want to retrieve the following transaction information (at least):</p><div class="itemizedlist"><ul type="disc"><li><p>items on loan, and to whom they are (and were) loaned;</p></li><li><p>borrowers who are blocked from using the library (and why);</p></li><li><p>borrowers who have bad addresses;</p></li><li><p>charges owed by borrowers;</p></li><li><p>items reserved by borrowers.</p></li></ul></div><p>Remember, because transaction records bascially involve some sort of relationship between borrowers and items, you want to be sure you have already loaded both your bibliographic and user records <span class="emphasis"><em>before</em></span> you load transaction data.</p><p>Here are the Koha database tables that store transaction data:</p><pre class="programlisting">+-------------------------+
| Transaction Tables      |
+-------------------------+
| accountlines            |
| accountoffsets          |
| issues                  |
| reserves                |
+-------------------------+</pre><p>Some of the columns in the <tt class="varname">borrowers</tt> table also hold some transaction-type data, namely <tt class="varname">gonenoaddress</tt> (set to "1" if the borrower has moved without leaving a new address), <tt class="varname">lost</tt> (set to "1" if the borrower has lost their library card), <tt class="varname">debarred</tt> (set to "1" if the borrower's library privileges have been suspended), and <tt class="varname">borrowernotes</tt>, which can hold any textual information about the borrower.</p><p>The <tt class="varname">accountlines</tt> and <tt class="varname">accountoffsets</tt> tables hold information about charges which the borrower owes the library:</p><pre class="programlisting">SHOW COLUMNS FROM accountlines;
+-------------------+---------------+------+-----+---------+-------+
| Field             | Type          | Null | Key | Default | Extra |
+-------------------+---------------+------+-----+---------+-------+
| borrowernumber    | int(11)       |      | MUL | 0       |       |
| accountno         | smallint(6)   |      |     | 0       |       |
| itemnumber        | int(11)       | YES  |     | NULL    |       |
| date              | date          | YES  |     | NULL    |       |
| amount            | decimal(28,6) | YES  |     | NULL    |       |
| description       | text          | YES  |     | NULL    |       |
| dispute           | text          | YES  |     | NULL    |       |
| accounttype       | varchar(5)    | YES  |     | NULL    |       |
| amountoutstanding | decimal(28,6) | YES  |     | NULL    |       |
| timestamp         | timestamp(14) | YES  | MUL | NULL    |       |
+-------------------+---------------+------+-----+---------+-------+</pre><pre class="programlisting"> SHOW COLUMNS FROM accountoffsets;
+----------------+---------------+------+-----+---------+-------+
| Field          | Type          | Null | Key | Default | Extra |
+----------------+---------------+------+-----+---------+-------+
| borrowernumber | int(11)       |      |     | 0       |       |
| accountno      | smallint(6)   |      |     | 0       |       |
| offsetaccount  | smallint(6)   |      |     | 0       |       |
| offsetamount   | decimal(28,6) | YES  |     | NULL    |       |
| timestamp      | timestamp(14) | YES  |     | NULL    |       |
+----------------+---------------+------+-----+---------+-------+</pre><p>For migration purposes, <tt class="varname">accountlines</tt> is the table that needs to be loaded with your existing data about charges owed by users. The <tt class="varname">accountoffsets</tt> table stores information about payments made against the account. For example, if a borrower owes the library $20.00 for a lost book, that information would get loaded into the <tt class="varname">accountlines</tt> table's <tt class="varname">borrowernumber</tt>, <tt class="varname">itemnumber</tt>, <tt class="varname">amount</tt> and <tt class="varname">amountoutstanding</tt> columns. Initially, <tt class="varname">amount</tt> and <tt class="varname">amountoutstanding</tt> are the same. If the borrower then makes a $10.00 payment toward this account, the payment amount is stored in <tt class="varname">accountoffsets.offsetamount</tt> and a new value for <tt class="varname">accountlines.amountoutstanding</tt> i
 s calculated.</p><p>Probably the most important data you want to move from your existing ILS to Koha is the record of which books each borrower has. This data gets loaded into the <tt class="varname">issues</tt> table:</p><pre class="programlisting">SHOW COLUMNS FROM issues;
+-----------------+---------------+------+-----+---------+-------+
| Field           | Type          | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+---------+-------+
| borrowernumber  | int(11)       |      | MUL | 0       |       |
| itemnumber      | int(11)       |      | MUL | 0       |       |
| date_due        | date          | YES  |     | NULL    |       |
| branchcode      | char(4)       | YES  |     | NULL    |       |
| issuingbranch   | char(18)      | YES  |     | NULL    |       |
| returndate      | date          | YES  |     | NULL    |       |
| lastreneweddate | date          | YES  |     | NULL    |       |
| return          | char(4)       | YES  |     | NULL    |       |
| renewals        | tinyint(4)    | YES  |     | NULL    |       |
| timestamp       | timestamp(14) | YES  |     | NULL    |       |
+-----------------+---------------+------+-----+---------+-------+</pre><p>The column names in this table are mostly self-explanatory. The most important for the migration process are the <tt class="varname">borrowernumber</tt> (which, you'll remember, is <span class="emphasis"><em>not</em></span> the same as the library card number), the <tt class="varname">itemnumber</tt> (not the same as the barcode number) and the <tt class="varname">date_due</tt>. If you do not know the <tt class="varname">branch</tt> where the item was issued, that's OK -- you'll still have a record of who has what and when it is due.</p><p>All the dates should be loaded in the yyyy-mm-dd format expected by MySQL. The <tt class="varname">returndate</tt> column will remain empty until the item is returned. Records are <span class="emphasis"><em>not</em></span> deleted from the <tt class="varname">issues</tt> table when the item is returned -- Koha knows the item has been returned by checking for a return
  date.</p><p>Finally, you'll need to load information about reserved items into the <tt class="varname">reserves</tt> table:</p><pre class="programlisting">SHOW COLUMNS FROM reserves;
+------------------+---------------+------+-----+------------+-------+
| Field            | Type          | Null | Key | Default    | Extra |
+------------------+---------------+------+-----+------------+-------+
| borrowernumber   | int(11)       |      |     | 0          |       |
| reservedate      | date          |      |     | 0000-00-00 |       |
| biblionumber     | int(11)       |      |     | 0          |       |
| constrainttype   | char(1)       | YES  |     | NULL       |       |
| branchcode       | varchar(4)    | YES  |     | NULL       |       |
| notificationdate | date          | YES  |     | NULL       |       |
| reminderdate     | date          | YES  |     | NULL       |       |
| cancellationdate | date          | YES  |     | NULL       |       |
| reservenotes     | text          | YES  |     | NULL       |       |
| priority         | smallint(6)   | YES  |     | NULL       |       |
| found            | char(1)       | YES  |     | NULL       |       |
| timestamp        | timestamp(14) | YES  |     | NULL       |       |
| itemnumber       | int(11)       | YES  |     | NULL       |       |
+------------------+---------------+------+-----+------------+-------+</pre><p>Again, most of the column names are self-explanatory. The <tt class="varname">constrainttype</tt> column is used to indicate whether the reserve has been placed on "any" copy (in which case the <tt class="varname">constrainttype</tt> will be "a" and the <tt class="varname">biblionumber</tt> will be set) or "one" specific copy (in which case the <tt class="varname">constrainttype</tt> will be "o" and the <tt class="varname">itemnumber</tt> will be set). The <tt class="varname">found</tt> column value is set once the item has been returned and is ready to be checked out to the borrower or to be sent to the pick-up branch (which is recorded in the <tt class="varname">branchcode</tt> column). The <tt class="varname">priority</tt> column keeps track of who is next on the list for the item. Once a reserve has been filled, the priority is set to "0."</p></div><div class="section" lang="en"><div class="tit
 lepage"><div><div><h3 class="title"><a name="d0e919"></a>5.4.&nbsp;Additional Documentation</h3></div></div><div></div></div><p>Many of the tools you will use in the process of writing scripts and manipulating data have web documentation:</p><div class="variablelist"><dl><dt><span class="term"><a href="http://dev.mysql.com/doc/" target="_top">MySQL</a></span></dt><dd><p>the basic commands you will need to work directly with your database.</p></dd><dt><span class="term"><a href="http://www.perldoc.com/" target="_top">Perl</a></span></dt><dd><p>the programming language used for Koha.</p></dd><dt><span class="term"><a href="http://dbi.perl.org/docs/" target="_top">DBI</a></span></dt><dd><p>the Perl database interface that allows you to include MySQL commands in your Perl scripts and retrieve data for use in scripts.</p></dd><dt><span class="term"><a href="http://directory.google.com/Top/Computers/Programming/Internet/CGI/Tutorials/?tc=1" target="_top">CGI</a></span></dt><dd><p>
 the Common Gateway Interface that allows Perl scripts to send data to, and retrieve data from, a webpage.</p></dd><dt><span class="term"><a href="http://marcpm.sourceforge.net/" target="_top">MARC::Record</a></span></dt><dd><p>the Perl module that allows you to manipulate MARC records.</p></dd><dt><span class="term"><a href="http://html-template.sourceforge.net/" target="_top">HTML::Template</a></span></dt><dd><p>the Perl module that allows you to set up webpage templates to display Koha data, or modify the default templates to suit your library.</p></dd></dl></div><p>Additional help is also available by sending an e-mail to the <a href="http://www.koha.org/mailing/" target="_top">Koha mailing list</a>.</p></div></div></div></body></html>
--- NEW FILE ---
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<article>
  <title>Migrating to Koha ver. 2.0.0</title>

  <articleinfo>
    <date>2004-11-08</date>

    <author>
      <firstname>Stephen</firstname>

      <surname>Hedges</surname>

      <email>shedges AT skemotah.com</email>
    </author>

    <revhistory>
      <revision>
[...1421 lines suppressed...]
          </varlistentry>

          <varlistentry>
            <term><ulink
            url="http://html-template.sourceforge.net/">HTML::Template</ulink></term>

            <listitem>
              <para>the Perl module that allows you to set up webpage
              templates to display Koha data, or modify the default templates
              to suit your library.</para>
            </listitem>
          </varlistentry>
        </variablelist></para>

      <para>Additional help is also available by sending an e-mail to the
      <ulink url="http://www.koha.org/mailing/">Koha mailing
      list</ulink>.</para>
    </section>
  </section>
</article>




More information about the Koha-cvs mailing list