#!/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 () { ($id,$name)=split; $temp{$name}=$id; } print "loading old table\n"; open (T1, $ARGV[2]) or die "2: Can not open ". $ARGV[2]; while () { ($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; }