X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=mig-bin%2Fmig-stagebibs;h=46244ec62d4fac267c8a757037af70671151d374;hp=0c9bdfdbb27becc92fdb74f744d8af86b108f380;hb=5606c0a7d3d96f03864fc644261536cba07992af;hpb=edd94a43773cd981e352a46dcfc9128b393e2b03 diff --git a/mig-bin/mig-stagebibs b/mig-bin/mig-stagebibs index 0c9bdfd..46244ec 100755 --- a/mig-bin/mig-stagebibs +++ b/mig-bin/mig-stagebibs @@ -48,7 +48,8 @@ my $next_arg_is_file = 0; my $append = 0; my $next_arg_is_source = 0; my $next_arg_is_stage = 0; -my $stage_table = 'biblio_record_entry'; +my $base_table = 'biblio_record_entry'; +my $stage_table = 'biblio_record_entry_legacy'; my $source = 'default'; my $file_is_xml = 0; my $dbh = Mig::db_connect(); @@ -78,14 +79,16 @@ foreach my $arg (@ARGV) { } } -my $bre_test = check_for_table($dbh,'biblio_record_entry'); -if ($bre_test == 0) { create_child_bre($dbh); } +my $bre_test = check_for_table($dbh,$base_table); +my $bre_legacy_test = check_for_table($dbh,$stage_table); +if ($bre_test == 0 and $bre_legacy_test == 0 ) { create_bre($dbh); create_child_bre($dbh); } +if ($bre_test == 1 and $bre_legacy_test == 0 ) { create_child_bre($dbh); } -my $xmig_test = check_for_column($dbh,'biblio_record_entry','x_migrate'); -if ($xmig_test == 0) { add_column($dbh,'biblio_record_entry','x_migrate','BOOLEAN DEFAULT TRUE'); } +my $xmig_test = check_for_column($dbh,$stage_table,'x_migrate'); +if ($xmig_test == 0) { add_column($dbh,$stage_table,'x_migrate','BOOLEAN DEFAULT TRUE'); } -my $xsource_test = check_for_column($dbh,'biblio_record_entry','x_source'); -if ($xsource_test == 0) { add_column($dbh,'biblio_record_entry','x_source','TEXT'); } +my $xsource_test = check_for_column($dbh,$stage_table,'x_source'); +if ($xsource_test == 0) { add_column($dbh,$stage_table,'x_source','TEXT'); } #flatten out MARC XML FILE open my $xml, "<:encoding(utf8)", $infile or abort('could not open MARC XML file'); @@ -104,25 +107,36 @@ while(my $line = <$xml>) { } close $xml; +if ($i == 0) { print "No XML was processed, are you sure this is an XML file?\n"; } print "Finis.\n"; # beyond here be functions -sub create_child_bre { +sub create_bre { my $dbh = shift; $dbh->do("DO \$\$ DECLARE t BOOLEAN; BEGIN - SELECT EXISTS(SELECT 1 FROM information_schema.tables WHERE table_schema = '$MIGSCHEMA' AND table_name = 'biblio_record_entry') INTO t; + SELECT EXISTS(SELECT 1 FROM information_schema.tables WHERE table_schema = '$MIGSCHEMA' AND table_name = '$base_table') INTO t; IF t = FALSE THEN - PERFORM migration_tools.build_specific_base_staging_table ('$MIGSCHEMA','biblio.record_entry'); + PERFORM migration_tools.build_specific_base_staging_table ('$MIGSCHEMA',REGEXP_REPLACE('$base_table','_','.')); END IF; END \$\$;"); return (); } +sub create_child_bre { + my $dbh = shift; + $dbh->do("DO \$\$ + BEGIN + CREATE TABLE $MIGSCHEMA.$stage_table (x_migrate BOOLEAN DEFAULT TRUE, x_source TEXT) INHERITS ($MIGSCHEMA.$base_table); + END \$\$;"); + + return (); +} + sub abort { my $msg = shift; print STDERR "$0: $msg", "\n"; @@ -145,8 +159,8 @@ sub stage_record { my $last_xact = "'$MIGSCHEMA'"; $record = '$_$' . $record . '$_$'; my $sql; - if ($source eq 'default') { $sql = "INSERT INTO $MIGSCHEMA.biblio_record_entry (last_xact_id,marc) VALUES ($last_xact,$record);"; } - else { $sql = "INSERT INTO $MIGSCHEMA.biblio_record_entry (last_xact_id,marc,x_source) VALUES ($last_xact,$record,'$source');"; } + if ($source eq 'default') { $sql = "INSERT INTO $MIGSCHEMA.$stage_table (last_xact_id,marc) VALUES ($last_xact,$record);"; } + else { $sql = "INSERT INTO $MIGSCHEMA.$stage_table (last_xact_id,marc,x_source) VALUES ($last_xact,$record,'$source');"; } my $sth = $dbh->prepare($sql); $sth->execute(); return;