4 use Time::HiRes qw/time/;
12 my ($userid, $sourceid, $rec_id, $entry_file, $marc_file, $map_file) = (1, 2, 1, 'record_entry.sql','record_marc.sql','record_id_map.pl');
15 "sourceid" => \$sourceid,
16 "entry_file=s" => \$entry_file,
17 "marc_file=s" => \$marc_file,
18 "tcn_map_file=s" => \$map_file,
19 "userid=i" => \$userid,
20 "first=i" => \$rec_id,
25 open RE, ">$entry_file" or die "Can't open $entry_file! $!\n";
26 open RM, ">$marc_file" or die "Can't open $marc_file! $!\n";
29 SET CLIENT_ENCODING TO 'UNICODE';
30 COPY biblio.record_entry (id,editor,creator,source,tcn_value,last_xact_id) FROM STDIN;
34 SET CLIENT_ENCODING TO 'UNICODE';
35 COPY biblio.record_marc (id,marc,last_xact_id) FROM STDIN;
40 my $parser = XML::LibXML->new;
43 while ( $xml .= <STDIN> ) {
50 my $doc = $parser->parse_string($xml);;
51 $tcn = $doc->documentElement->findvalue( '/*/*[@tag="035"][1]' );
63 $tcn =~ s/^.*?(\w+)\s*$/$1/go;
66 warn "\nNo TCN found for rec # $rec_id\n";
72 if (exists($$tcn_map{$tcn})) {
73 warn "\n !! TCN $tcn already exists!\n";
79 $$tcn_map{$tcn} = $rec_id;
81 print RE join("\t", ($rec_id,$userid,$userid,$sourceid,$tcn,$xact_id))."\n";
82 print RM join("\t", ($rec_id,$xml,$xact_id))."\n";
89 print RE "SELECT setval('biblio.record_entry_id_seq'::TEXT, $rec_id);\n";
92 open MAP, ">$map_file" or die "Can't open $map_file! $!\n";
93 print MAP Data::Dumper->Dump([$tcn_map],['tcn_map']);