#!/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>