Annotation of db/prgsrc/dump2dump.pl, revision 1.1

1.1     ! boris       1: #!/usr/local/bin/perl -w
        !             2: 
        !             3: =head1 NAME
        !             4: 
        !             5: dump2dump.pl - Скрипт для преобразования номеров вопросов в дампе, 
        !             6: созданном скриптом dumpRS.pl, используя таблицы, созданные скриптом 
        !             7: dumpin2out.pl. У обработанных вопросов устанавливает ProcessedBySearch=1
        !             8: (loaddump уже не бует обладать этой информацией)
        !             9: 
        !            10: 
        !            11: =head1 SYNOPSIS
        !            12: 
        !            13: dump2dump.pl input output oldtable newtable
        !            14: 
        !            15: 
        !            16: =head1 AUTHOR
        !            17: 
        !            18: Роман Семизаров
        !            19: 
        !            20: 
        !            21: =cut
        !            22: 
        !            23: 
        !            24: use dbchgk;
        !            25: 
        !            26: open (T2, $ARGV[3]) or die "3: Can not open ". $ARGV[3];
        !            27: 
        !            28: open (OUTTABLE, ">d423JX2");
        !            29: 
        !            30: print "loading new table\n";
        !            31: 
        !            32: while (<T2>)
        !            33: {
        !            34:   ($id,$name)=split;
        !            35:   $temp{$name}=$id;
        !            36: }
        !            37: 
        !            38: print "loading old table\n";
        !            39: open (T1, $ARGV[2]) or die "2: Can not open ". $ARGV[2];
        !            40: 
        !            41: while (<T1>)
        !            42: {
        !            43:   ($in,$out)=split;
        !            44:   $id{$in}=$temp{$out};
        !            45: }
        !            46: 
        !            47: #%temp=undef;
        !            48: 
        !            49: close(T1);
        !            50: close(T2);
        !            51: 
        !            52: 
        !            53: 
        !            54: open (DUMP1, $ARGV[0]) or die "0: Can not open ". $ARGV[0];
        !            55: binmode(DUMP1);
        !            56: open (DUMP2, ">".$ARGV[1])  or die "1: Can not open ". $ARGV[1];
        !            57: binmode(DUMP2);
        !            58: 
        !            59: print "getting and writing dump\n";
        !            60: while (read(DUMP1, $w,4))
        !            61: {
        !            62:    print "$sch...\n" unless (++$sch%100);
        !            63:    read(DUMP1,$l,4);
        !            64:    read(DUMP1,$q,unpack("L",$l));
        !            65:    $q=~s/(.)(..)(.)/$1.pack("S",$id{unpack("S",$2)}).$3/sge;
        !            66: 
        !            67:    print DUMP2 $w,$l,$q;
        !            68: }
        !            69: 
        !            70: close (DUMP1);
        !            71: close (DUMP2);
        !            72: 
        !            73: print "Setting ProcessedBySearch...\n";
        !            74: 
        !            75: 
        !            76: $sch=0
        !            77: foreach my $id (values %id)
        !            78: {
        !            79:   print " $sch...\n" unless (++$sch%100);
        !            80:   mydo("update Questions set ProcessedBySearch=1 where QuestionId=$id");
        !            81: }
        !            82: 
        !            83: 
        !            84: 
        !            85: 
        !            86: 
        !            87: sub s
        !            88: {
        !            89:   my $a=shift;
        !            90:   my $unpacked=unpack("S",$a);
        !            91:   $unpacked=$id{$unpacked};
        !            92:   my $packed=pack("S",$unpacked);
        !            93:   $packed;
        !            94: }

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