Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tách một tệp mysqldump với nhiều cơ sở dữ liệu, theo cơ sở dữ liệu

Tập lệnh Perl này sẽ thực hiện thủ thuật.

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

Chạy điều này cho tệp kết xuất chứa tất cả cơ sở dữ liệu

./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. Cách tìm đường dẫn phân cấp cho biểu diễn dạng cây

  2. Cách tránh lỗi hết bộ nhớ trong trình duyệt do quá nhiều lệnh gọi ajax

  3. mysql CHỌN LIKE chỉ phải khớp toàn bộ từ với biến

  4. Tại sao một truy vấn chèn đôi khi mất quá nhiều thời gian để hoàn thành?

  5. c3p0 bị treo ở chế độ chờ đợi Có sẵn khi ngủ đông