[Koha-patches] [PATCH] script to remove authorities without biblio attached

Paul Poulain paul.poulain at biblibre.com
Thu Jul 23 17:23:35 CEST 2009


---
 misc/migration_tools/remove_unused_authorities.pl |   92 +++++++++++++++++++++
 1 files changed, 92 insertions(+), 0 deletions(-)
 create mode 100755 misc/migration_tools/remove_unused_authorities.pl

diff --git a/misc/migration_tools/remove_unused_authorities.pl b/misc/migration_tools/remove_unused_authorities.pl
new file mode 100755
index 0000000..2400647
--- /dev/null
+++ b/misc/migration_tools/remove_unused_authorities.pl
@@ -0,0 +1,92 @@
+#!/usr/bin/perl
+
+#script to administer Authorities without biblio
+# This software is placed under the gnu General Public License, v2 (http://www.gnu.org/licenses/gpl.html)
+
+# Copyright 2009 BibLibre
+# written 2009-05-04 by paul dot poulain at biblibre.com
+#
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA  02111-1307 USA
+
+use strict;
+
+use C4::Context;
+use C4::AuthoritiesMarc;
+use Getopt::Long;
+use warnings;
+
+my ($test, at authtypes);
+my $want_help = 0;
+GetOptions(
+    'aut|authtypecode:s'    => \@authtypes,
+    't'    => \$test,
+    'h|help'        => \$want_help
+);
+
+if ($want_help) {
+    print_usage();
+    exit 0;
+}
+
+my $dbh=C4::Context->dbh;
+ at authtypes or @authtypes = qw( NC );
+my $thresholdmin=0;
+my $thresholdmax=0;
+my @results;
+# prepare the request to retrieve all authorities of the requested types
+my $rqselect = $dbh->prepare(
+    qq{SELECT * from auth_header where authtypecode IN (}
+    . join(",",map{$dbh->quote($_)}@authtypes)
+    . ")"
+);
+$|=1;
+
+$rqselect->execute;
+my $counter=0;
+my $totdeleted=0;
+my $totundeleted=0;
+while (my $data=$rqselect->fetchrow_hashref){
+    my $query;
+    $query= "an=".$data->{'authid'};
+    # search for biblios mapped
+    my ($err,$res,$used) = C4::Search::SimpleSearch($query,0,10);
+    print ".";
+    print "$counter\n" unless $counter++ % 100;
+    # if found, delete, otherwise, just count
+    if ($used>=$thresholdmin and $used<=$thresholdmax){
+        DelAuthority($data->{'authid'}) unless $test;
+        $totdeleted++;
+    } else {
+        $totundeleted++;
+    }
+}
+
+print "$counter authorities parsed, $totdeleted deleted and $totundeleted unchanged because used\n";
+
+
+sub print_usage {
+    print <<_USAGE_;
+$0: Removes unused authorities.
+
+This script will parse all authoritiestypes given as parameter, and remove authorities without any biblio attached.
+warning : there is no individual confirmation !
+parameters
+    --aut|authtypecode TYPE       the list of authtypes to check
+    --t|test                      test mode, don't delete really, just count
+    --help or -h                  show this message.
+
+_USAGE_
+}
-- 
1.6.0.4




More information about the Koha-patches mailing list