Extracting MySQL Table with Perl

Sunday, March 02, 2008 link

Every once in a while, I have to extract an individual table from my MySQL archive files. Here's a small Perl script to do that.

Example:
% perl extract_table.pl dump_20080301.sql dt_show_saved

Code:
#!/usr/bin/perl

use strict;
use warnings;

my $usage = "\nUsage: $0 <fileName> <tableName>\n\n";

my $fileName = shift || die $usage;
my $table = shift || die $usage;

my @keepLines = ();
my $doKeep = 0;

open(FILE, "<$fileName") || die "Can't open $fileName: $!";
while (my $line = <FILE>)
{
# Look for comment: -- Table structure for table 'tableName'
if (substr($line, 0,8) eq "-- Table")
{
if ($doKeep)
{
last;
}
elsif ($line =~ m/$table/i)
{
$doKeep = 1;
}
}
push @keepLines, $line if $doKeep;
}
close FILE;

print for @keepLines;