Skip to content

Instantly share code, notes, and snippets.

@rahul286
Forked from neilalbrock/splitmysqldump.pl
Created June 29, 2013 18:32
Show Gist options
  • Select an option

  • Save rahul286/5892164 to your computer and use it in GitHub Desktop.

Select an option

Save rahul286/5892164 to your computer and use it in GitHub Desktop.
#!/usr/bin/perl -w
#
# splitmysqldump - split mysqldump file into per-database dump files.
use strict;
use warnings;
my $dbfile;
my $dbname = q{};
my $header = q{};
while (<>) {
# Beginning of a new database section:
# close currently open file and start a new one
if (m/-- Current Database\: \`([-\w\.]+)\`/) {
if (defined $dbfile && tell $dbfile != -1) {
close $dbfile or die "Could not close file!"
}
$dbname = $1;
open $dbfile, ">>", "$1_dump.sql" or die "Could not create file!";
print $dbfile $header;
print "Writing file $1_dump.sql ...\n";
}
if (defined
$dbfile && tell $dbfile != -1) {
print $dbfile $_;
}
# Catch dump file header in the beginning
# to be printed to each separate dump file.
if (!
$dbname) { $header .= $_; }
}
close $dbfile or die "Could not close file!"
@rahul286
Copy link
Copy Markdown
Author

Added support for dot (.) in database names

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment