Diff for /db/prgsrc/dump2dump.pl between versions 1.1 and 1.2

version 1.1, 2001/10/31 03:00:10 version 1.2, 2001/10/31 03:07:27
Line 1 Line 1
 #!/usr/local/bin/perl -w  #!/usr/local/bin/perl -w
   
 =head1 NAME  =head1 NAME
   
 dump2dump.pl - Скрипт для преобразования номеров вопросов в дампе,  dump2dump.pl - Скрипт для преобразования номеров вопросов в дампе, 
 созданном скриптом dumpRS.pl, используя таблицы, созданные скриптом  созданном скриптом dumpRS.pl, используя таблицы, созданные скриптом 
 dumpin2out.pl. У обработанных вопросов устанавливает ProcessedBySearch=1  dumpin2out.pl. У обработанных вопросов устанавливает ProcessedBySearch=1
 (loaddump уже не бует обладать этой информацией)  (loaddump уже не бует обладать этой информацией)
   
   
 =head1 SYNOPSIS  =head1 SYNOPSIS
   
 dump2dump.pl input output oldtable newtable  dump2dump.pl input output oldtable newtable
   
   
 =head1 AUTHOR  =head1 AUTHOR
   
 Роман Семизаров  Роман Семизаров
   
   
 =cut  =cut
   
   
 use dbchgk;  use dbchgk;
   
 open (T2, $ARGV[3]) or die "3: Can not open ". $ARGV[3];  open (T2, $ARGV[3]) or die "3: Can not open ". $ARGV[3];
   
 open (OUTTABLE, ">d423JX2");  open (OUTTABLE, ">d423JX2");
   
 print "loading new table\n";  print "loading new table\n";
   
 while (<T2>)  while (<T2>)
 {  {
   ($id,$name)=split;    ($id,$name)=split;
   $temp{$name}=$id;    $temp{$name}=$id;
 }  }
   
 print "loading old table\n";  print "loading old table\n";
 open (T1, $ARGV[2]) or die "2: Can not open ". $ARGV[2];  open (T1, $ARGV[2]) or die "2: Can not open ". $ARGV[2];
   
 while (<T1>)  while (<T1>)
 {  {
   ($in,$out)=split;    ($in,$out)=split;
   $id{$in}=$temp{$out};    $id{$in}=$temp{$out};
 }  }
   
 #%temp=undef;  #%temp=undef;
   
 close(T1);  close(T1);
 close(T2);  close(T2);
   
   
   
 open (DUMP1, $ARGV[0]) or die "0: Can not open ". $ARGV[0];  open (DUMP1, $ARGV[0]) or die "0: Can not open ". $ARGV[0];
 binmode(DUMP1);  binmode(DUMP1);
 open (DUMP2, ">".$ARGV[1])  or die "1: Can not open ". $ARGV[1];  open (DUMP2, ">".$ARGV[1])  or die "1: Can not open ". $ARGV[1];
 binmode(DUMP2);  binmode(DUMP2);
   
 print "getting and writing dump\n";  print "getting and writing dump\n";
 while (read(DUMP1, $w,4))  while (read(DUMP1, $w,4))
 {  {
    print "$sch...\n" unless (++$sch%100);     print "$sch...\n" unless (++$sch%100);
    read(DUMP1,$l,4);     read(DUMP1,$l,4);
    read(DUMP1,$q,unpack("L",$l));     read(DUMP1,$q,unpack("L",$l));
    $q=~s/(.)(..)(.)/$1.pack("S",$id{unpack("S",$2)}).$3/sge;     $q=~s/(.)(..)(.)/$1.pack("S",$id{unpack("S",$2)}).$3/sge;
   
    print DUMP2 $w,$l,$q;     print DUMP2 $w,$l,$q;
 }  }
   
 close (DUMP1);  close (DUMP1);
 close (DUMP2);  close (DUMP2);
   
 print "Setting ProcessedBySearch...\n";  print "Setting ProcessedBySearch...\n";
   
   
 $sch=0  $sch=0
 foreach my $id (values %id)  foreach my $id (values %id)
 {  {
   print " $sch...\n" unless (++$sch%100);    print " $sch...\n" unless (++$sch%100);
   mydo("update Questions set ProcessedBySearch=1 where QuestionId=$id");    mydo("update Questions set ProcessedBySearch=1 where QuestionId=$id");
 }  }
   
   
   
   
   
 sub s  sub s
 {  {
   my $a=shift;    my $a=shift;
   my $unpacked=unpack("S",$a);    my $unpacked=unpack("S",$a);
   $unpacked=$id{$unpacked};    $unpacked=$id{$unpacked};
   my $packed=pack("S",$unpacked);    my $packed=pack("S",$unpacked);
   $packed;    $packed;
 }  }

Removed from v.1.1  
changed lines
  Added in v.1.2


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