From 95fb76586fafdecc043cb6250320ca9be2f015da Mon Sep 17 00:00:00 2001 From: tonnesen Date: Mon, 19 Nov 2001 18:26:50 +0000 Subject: [PATCH] Script that will update existing databases, creating any new tables, adding, modifying or removing any fields from existing tables. This is in very early stages. Need to go through and ascertain which tables and fields need to be added/modified. Also need to add a "backup" before any modifications are made. Thoughts on this are welcome. --- updater/updatedatabase | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100755 updater/updatedatabase diff --git a/updater/updatedatabase b/updater/updatedatabase new file mode 100755 index 0000000000..ecd7669dcc --- /dev/null +++ b/updater/updatedatabase @@ -0,0 +1,66 @@ +#!/usr/bin/perl + +# This script will check for required updates to the database. Would also be a +# good idea to offer to do a backup at this time... + + +use C4::Database; +use C4::Catalogue; +use DBI; +use C4::Acquisitions; +use C4::Output; +my $dbh=C4Connect; + +my %tables; +my %types; + +my $sth=$dbh->prepare("show tables"); +$sth->execute; +while (my ($table) = $sth->fetchrow) { + $tables{$table}=1; + print "Table: $table\n"; +} + + + +# Add tables required by Z-3950 scripts + +unless ($tables{'z3950queue') { + my $sti=$dbh->prepare("create table z3950queue (id int auto_increment primary key, term text, type char(10), startdate int, enddate int, done smallint, results longblob, numercords int, servers text, identifier char(30))"); + $sti->execute; +} + +unless ($tables{'z3950results'}) { + my $sti=$dbh->prepare("create table z3950results (id int auto_increment primary key, queryid int, server char(255), startdate int, enddate int, results longblob, numrecords int, numdownloaded int, highestseen int, active smallint)"); + $sti->execute; +} +unless ($tables{'z3950servers'}) { + my $sti=$dbh->prepare("create table z3950servers (host char(255), port int, db char(255), userid char(255), password char(255), name text, id int, checked smallint, rank int)"); + $sti->execute; + $sti=$dbh->prepare("insert into z3950servers values ('z3950.loc.gov', 7090, 'voyager', '', '', 'Library of Congress', 1, 1, 1)"); + $sti->execute; +} + + + +# Get list of columns from biblioitems table + +my $sth=$dbh->prepare("show columns from biblioitems"); +$sth->execute; +while (my ($column, $type, $null, $key, $default, $extra) = $sth->fetchrow) { + $types{$column}=$type; +} +unless ($types{'lccn'}) { + # Add LCCN field to biblioitems db + my $sti=$dbh->prepare("alter table biblioitems add column lccn char(25)"); + $sti->execute; +} +unless ($types{'marc'}) { + # Add MARC field to biblioitems db (not used anymore) + my $sti=$dbh->prepare("alter table biblioitems add column marc text"); + $sti->execute; +} + + +$sth->finish; +$dbh->disconnect; -- 2.39.5