File:  [Local Repository] / db / prgsrc / dump2dump.pl
Revision 1.5: download - view: text, annotated - select for diffs - revision graph
Mon Jan 14 01:41:08 2002 UTC (22 years, 3 months ago) by boris
Branches: MAIN
CVS tags: HEAD
Made it ocmpilalbel

#!/usr/local/bin/perl -w

=head1 NAME

dump2dump.pl - Скрипт для преобразования номеров вопросов в дампе, 
созданном скриптом dumpRS.pl, используя таблицы, созданные скриптом 
dumpin2out.pl. У обработанных вопросов устанавливает ProcessedBySearch=1
(loaddump уже не бует обладать этой информацией)


=head1 SYNOPSIS

dump2dump.pl input output oldtable newtable


=head1 AUTHOR

Роман Семизаров


=cut

    use lib "../lib";
use dbchgk;

open (T2, $ARGV[3]) or die "3: Can not open ". $ARGV[3];

open (OUTTABLE, ">d423JX2");

print "loading new table\n";

while (<T2>)
{
  ($id,$name)=split;
  $temp{$name}=$id;
}

print "loading old table\n";
open (T1, $ARGV[2]) or die "2: Can not open ". $ARGV[2];

while (<T1>)
{
  ($in,$out)=split;
  $id{$in}=$temp{$out};
}

#%temp=undef;

close(T1);
close(T2);



open (DUMP1, $ARGV[0]) or die "0: Can not open ". $ARGV[0];
binmode(DUMP1);
open (DUMP2, ">".$ARGV[1])  or die "1: Can not open ". $ARGV[1];
binmode(DUMP2);

print "getting and writing dump\n";
while (read(DUMP1, $w,4))
{
   print "$sch...\n" unless (++$sch%100);
   read(DUMP1,$l,4);
   read(DUMP1,$q,unpack("L",$l));
   $q=~s/(.)(..)(.)/$1.pack("S",$id{unpack("S",$2)}).$3/sge;

   print DUMP2 $w,$l,$q;
}

close (DUMP1);
close (DUMP2);

print "Setting ProcessedBySearch...\n";


$sch=0;
foreach my $id (values %id)
{
  print " $sch...\n" unless (++$sch%100);
  mydo("update Questions set ProcessedBySearch=1 where QuestionId=$id");
}





sub s
{
#!!!! Ne doizmeneno!!!!!!!!!
  my $a=shift;
  my $unpacked=unpack("L",$a);
  my $field=$unpacked && 0xF;
  $unpacked=$id{(($unpacked & 0xF0) << 12) + $unpacked & 0xFFFF};
#  my $packed=$field | $unpacked & 0xF0) << 12) + $unpacked & 0xFFFF);
  $packed;
}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>