All pastes #219059 Raw Edit

Anonymous

public text v1 · immutable
#219059 ·published 2006-10-24 14:14 UTC
rendered paste body
#!/usr/bin/perl
use warnings;

print "-"x80,"\n";
if (! defined($ARGV[1]) ) {
    print "Start het programma als volgt: \n"
         ."./fetchtable -db db.sql\n";
    exit;
}
my $sqldump        = $ARGV[1];
my $begin_of_db    = 0;
my $end_of_db      = 0;
my $begin_of_table = 0;
my $end_of_table   = 0;
my $linenumber     = 0;
my $name_of_table;
my $name_of_db;
my $fh;

print "Geef de databasenaam:\n";
chomp($name_of_db   = <STDIN>);
print "Geef de tabelnaam waarvan structuur en data uit de dump moet worden"
     ."gehaald\n";
chomp($name_of_table = <STDIN>);
print "-"x80,"\n";
open($fh, "<$sqldump")
    or die "Kan $sqldump niet openen!\n";


my $db_cmp_data           = "-- Current Database: `$name_of_db`";
my $table_struct_cmp_data = "-- Table structure for table `$name_of_table`";

my $check = 0;
while(<$fh>) {
    chomp;
    $linenumber++;
    if ( $_ eq $db_cmp_data ) {
        $begin_of_db = $linenumber;
        $check = 1;
        next;
    }
    if ( /.*Current Database.*/ && $check == 1) {
        $end_of_db = $linenumber;
        last;
    }
}
seek $fh,0,0;
$check      = 0;
$linenumber = 0;
while(<$fh>) {
    chomp;
    $linenumber++;
    if ( $linenumber == $begin_of_db ) {
         while(<$fh>) {
            chomp;
            $linenumber++;
            if ( $_ eq $table_struct_cmp_data ) {
                $begin_of_table = $linenumber;
                $check = 1;
                next;
            }
            if ( /.*Table structure.*/ && $check == 1) {
                $end_of_table   = $linenumber;
                last;
            }
        }
    }
}

my $restore_file = "$name_of_table".".sql";
my $restore_fh;
open($restore_fh, ">>$ENV{'HOME'}/$restore_file")
    or die "Kan $restore_file niet openen!\n";

seek $fh,0,0; 
$check      = 0;
$linenumber = 0;
while(<$fh>) {
    $linenumber++;
    if ( $linenumber == $begin_of_table ) {
        while(<$fh>) {
            chomp;
            $linenumber++;
            last if $linenumber == $end_of_table;
            print $restore_fh "$_\n";
        }
    }
}

close $fh;
close $restore_fh;