koha-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Koha-cvs] koha/misc move_marc_to_biblioitems.pl [dev_week]


From: Chris Cormack
Subject: [Koha-cvs] koha/misc move_marc_to_biblioitems.pl [dev_week]
Date: Tue, 09 May 2006 09:11:00 +0000

CVSROOT:        /sources/koha
Module name:    koha
Branch:         dev_week
Changes by:     Chris Cormack <address@hidden>  06/05/09 09:11:00

Added files:
        misc           : move_marc_to_biblioitems.pl 

Log message:
        Script to move marc to biblioitems

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/koha/misc/move_marc_to_biblioitems.pl?only_with_tag=dev_week&rev=1.1.2.1

Patches:
Index: koha/misc/move_marc_to_biblioitems.pl
diff -u /dev/null koha/misc/move_marc_to_biblioitems.pl:1.1.2.1
--- /dev/null   Tue May  9 09:11:00 2006
+++ koha/misc/move_marc_to_biblioitems.pl       Tue May  9 09:11:00 2006
@@ -0,0 +1,39 @@
+#!/usr/bin/perl
+
+# script to shift marc to biblioitems
+# scraped from updatedatabase for dev week by address@hidden
+
+use C4::Context;
+use C4::Biblio;
+use MARC::Record;
+use MARC::File::XML ( BinaryEncoding => 'utf8' );
+
+print "moving MARC record to biblioitems table\n";
+
+my $dbh = C4::Context->dbh();
+# changing marc field type
+$dbh->do('ALTER TABLE biblioitems CHANGE marc marc BLOB NULL DEFAULT NULL ');
+
+# adding marc xml, just for convenience
+$dbh->do(
+'ALTER TABLE biblioitems ADD marcxml TEXT CHARACTER SET utf8 COLLATE 
utf8_general_ci NOT NULL '
+);
+
+# moving data from marc_subfield_value to biblio
+$sth = $dbh->prepare('select bibid,biblionumber from marc_biblio');
+$sth->execute;
+my $sth_update =
+  $dbh->prepare(
+    'update biblioitems set marc=? where biblionumber=?');
+my $totaldone = 0;
+while ( my ( $bibid, $biblionumber ) = $sth->fetchrow ) {
+    my $record = MARCgetbiblio( $dbh, $bibid );
+
+    #Force UTF-8 in record leader
+    $record->encoding('UTF-8');
+    $sth_update->execute( $record->as_usmarc(), $record->as_xml_record(),
+        $biblionumber );
+    $totaldone++;
+    print "\r$totaldone / $totaltodo" unless ( $totaldone % 100 );
+}
+print "\rdone\n";




reply via email to

[Prev in Thread] Current Thread [Next in Thread]