4 use Time::HiRes qw/time/;
12 my ($userid,$sourceid,$rec_id,$entry_file,$id_tag) = (1,2,1,'authority_entry.sql','//*[@tag="035"][1]');
15 "sourceid" => \$sourceid,
16 "sql_output=s" => \$entry_file,
17 "userid=i" => \$userid,
18 "first=i" => \$rec_id,
19 "id_tag_xpath=s" => \$id_tag,
24 open RE, ">$entry_file" or die "Can't open $entry_file! $!\n";
27 SET CLIENT_ENCODING TO 'UNICODE';
28 COPY authority.record_entry (id,editor,creator,arn_value,marc,last_xact_id) FROM STDIN;
33 my $parser = XML::LibXML->new;
36 while ( $xml .= <STDIN> ) {
43 my $doc = $parser->parse_string($xml);
44 my @nodes = $doc->documentElement->findnodes( $id_tag );
46 $tcn .= $n->textContent;
48 $tcn =~ s/^\s*(\.+)\s*/$1/o;
61 $tcn =~ s/^.*?(\w+)\s*$/$1/go;
64 warn "\nNo TCN found for rec # $rec_id\n";
70 if (exists($$tcn_map{$tcn})) {
71 warn "\n !! TCN $tcn already exists!\n";
77 $$tcn_map{$tcn} = $rec_id;
79 print RE join("\t", ($rec_id,$userid,$userid,$tcn,$xml,$xact_id))."\n";
86 print RE "SELECT setval('authority.record_entry_id_seq'::TEXT, $rec_id);\n";