[Koha] Item batch modifications using custom SQL or Perl?

Alvaro Cornejo cornejo.alvaro at gmail.com
Tue Jul 10 06:38:02 NZST 2018


Hi Paul

I'm not expert in koha, but as I can see, in both cases you are accessing
directly the DB; therefore the result will be the same. Doing it with perl,
has the advantage that it will let you extract -if needed- some extra
error/debug info if something went wrong.

In any case, you I recommend you to manually re-index your database; either
with zebra or with elasticsearch.

Regards,

Alvaro



|-----------------------------------------------------------------------------------------------------------------|
Envíe y Reciba Datos y mensajes de Texto (SMS) hacia y desde cualquier
celular y Nextel
en el Perú, México y en mas de 180 paises. Use aplicaciones 2 vias via SMS
y GPRS online
              Visitenos en www.perusms.com

2018-07-09 13:09 GMT-05:00 Paul Hoffman <paul at flo.org>:

> I've been asked to modify a batch of item call numbers, substituting
> "PYA" for "PZ100" whenever the latter occurs at the beginning of the
> call number.  This doesn't seem possible using the existing Batch Item
> Modification tool (batchMod.pl).
>
> I would love to do this using SQL only, like so:
>
>     UPDATE items
>     SET    itemcallnumber = concat("PYA", substr(itemcallnumber, 6))
>     WHERE  itemcallnumber LIKE 'PZ100%';
>
> However, I suspect that this will mess up indexing or call number browse
> or *something*.  Reading the relevant parts of C4::Items, I believe I
> can more safely accomplish this in Perl, something along these lines...
>
>     use C4::Items;
>     use C4::Context;
>
>     use strict;
>     use warnings;
>
>     my $dbh = C4::Context->dbh;
>     $dbh->{RaiseError} = 1;
>     my $sql = q{
>         SELECT  biblionumber, itemnumber, itemcallnumber
>         FROM    items
>         WHERE   itemcallnumber LIKE 'PZ100%'
>     };
>     my $sth = $dbh->prepare($sql);
>     $sth->execute;
>     while (my ($bibnum, $itemnum, $callnum) = $sth->fetchrow_array) {
>         $callnum =~ s/^PZ100/PYA/;
>         ModItem(
>             {'itemcallnumber' => $callnum},
>             $bibnum,
>             $itemnum
>         ) or print STDERR "Could not update item $itemnum\n";
>     }
>
> Is this pretty much the simplest way to safely make unusual batch
> modifications like this?
>
> Thanks in advance,
>
> Paul.
>
> --
> Paul Hoffman <paul at flo.org>
> Systems Librarian
> Fenway Libraries Online
> c/o Wentworth Institute of Technology
> 550 Huntington Ave.
> Boston, MA 02115
> (617) 442-2384 (FLO main number)
> _______________________________________________
> Koha mailing list  http://koha-community.org
> Koha at lists.katipo.co.nz
> https://lists.katipo.co.nz/mailman/listinfo/koha
>


More information about the Koha mailing list