improved docs for mig-stagebibs
[migration-tools.git] / mig-bin / mig-stagebibs
index 1801f02..e00c1d3 100755 (executable)
@@ -3,19 +3,27 @@
 ###############################################################################
 =pod
 
-=item B<stagebibs> --file foo.xml
+=item B<stagebibs> --file foo.mrc.xml
 
 Takes a load of bibs from a UTF-8 MARC XML  file and loads them into mig staging 
-table of bibio_record_entry.  This is done with no checking of file validity 
+table of bibio_record_entry_legacy.  This is done with no checking of file validity 
 so records should be checked before hand and cleaned.
 
-Takes one  optional arguments:
+Takes three optional arguments:
 
 --source
 
 Sets an x_source value on the staging table to the one supplied instead of the 
 default of none.
 
+--auth foo.mrc.xml
+
+This will load bibs into the authority_record_entry_legacy.
+
+--serial foo.mrc.xml
+
+This will load bibs into the serial_record_entry_legacy.
+
 =back
 
 =cut
@@ -48,6 +56,9 @@ my $next_arg_is_file = 0;
 my $append = 0;
 my $next_arg_is_source = 0;
 my $next_arg_is_stage = 0;
+my $next_arg_is_base_table = 0;
+my $next_arg_is_stage_table = 0;
+my $base_table = 'biblio_record_entry';
 my $stage_table = 'biblio_record_entry_legacy';
 my $source = 'default';
 my $file_is_xml = 0;
@@ -58,6 +69,14 @@ my $batch;
 binmode STDIN, ':utf8';
 
 foreach my $arg (@ARGV) {
+    if ($arg eq '--auth') {
+        $base_table = 'authority_record_entry';
+        $stage_table = 'authority_record_entry_legacy';
+    }
+    if ($arg eq '--serial') {
+        $base_table = 'serial_record_entry';
+        $stage_table = 'serial_record_entry_legacy';
+    }
     if ($arg eq '--file') {
         $next_arg_is_file = 1;
         next;
@@ -76,18 +95,36 @@ foreach my $arg (@ARGV) {
         $next_arg_is_source = 0;
         next;
     }
+    if ($arg eq '--base-table') {
+        $next_arg_is_base_table = 1;
+        next;
+    }
+    if ($next_arg_is_base_table) {
+        $base_table = $arg;
+        $next_arg_is_base_table = 0;
+        next;
+    }
+    if ($arg eq '--stage-table') {
+        $next_arg_is_stage_table = 1;
+        next;
+    }
+    if ($next_arg_is_stage_table) {
+        $stage_table = $arg;
+        $next_arg_is_stage_table = 0;
+        next;
+    }
 }
 
-my $bre_test = check_for_table($dbh,'biblio_record_entry');
-my $bre_legacy_test = check_for_table($dbh,'biblio_record_entry_legacy');
-if ($bre_test == 0 and $bre_legacy_test == 0 ) { create_child_bre($dbh); rename_child_bre($dbh); }
-if ($bre_test == 1 and $bre_legacy_test == 0 ) { rename_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');
@@ -111,26 +148,26 @@ 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 rename_child_bre {
+sub create_child_bre {
     my $dbh = shift;
     $dbh->do("DO \$\$ 
         BEGIN
-        ALTER TABLE biblio_record_entry RENAME TO biblio_record_entry_legacy;
+        CREATE TABLE $MIGSCHEMA.$stage_table (x_migrate BOOLEAN DEFAULT TRUE, x_source TEXT) INHERITS ($MIGSCHEMA.$base_table);
         END \$\$;");
 
     return ();
@@ -158,8 +195,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;