MySQL: Alle Tabellen einer Datenbank in einzelne Dateien speichern?

Tags: Linux, MySQL, CLI, Bash, Script

Es kommt immer wieder vor, dass einzelne Tabellen einer MySQL-Datenbank gesichert werden müssen.
Das ist mit mysqldump kein Problem:

# mysqldump -u root -p openemm tabelle1 > tabelle1.sql
# mysqldump -u root -p openemm tabelle1 > tabelle1.sql

Solange nur wenige Tabellen benötigt werden, ist das kein Problem.
Lästig wird es jedoch, wenn eine Datenbank aus mehreren Dutzend Tabellen besteht und alle separat in einzelne Dateien gedumped werden müssen.

Hier hilft ein kleines shell-Script:

#!/bin/bash
mysqluser=$1
mysqlpass=$2
database=$3

if [[ "$database" = "" ]]; then
  echo "SplitDump MySQL-User MySQL-Password Datenbankname"
  exit 1
fi

for table in `mysql -u $mysqluser --password=$mysqlpass -D $database -e 'show tables' | egrep -v 'Tables_in' `; do
  echo "Bearbeite Tabelle $table"
  mysqldump --opt -Q -u $mysqluser --password=$mysqlpass $database $table > $table.sql
done

if [[ "$table" = "" ]]; then
  echo "Keine Tabellen in Datenbank $database gefunden!"
fi