Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Podziel plik mysqldump z wieloma bazami danych według bazy danych

Ten skrypt Perla powinien załatwić sprawę.

#!/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!"

Uruchom to dla pliku zrzutu zawierającego wszystkie bazy danych

./splitmysqldump < all_databases.sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zsumować ciąg znaków oddzielonych przecinkami w SQL?

  2. MySQL Wildcard dla =- czy istnieje?

  3. Jak przechowywać dane XML w bazie danych mysql? Nie chcę kluczy obcych jak szalona

  4. Wymień wszystkie tabele zawierające podaną nazwę kolumny

  5. Ograniczenie CHECK w MySQL nie działa