CFML- und Web-Entwicklung allgemein

MySQL Backup Dump mehrerer Tabellen über mysqldump (Windows)

Kürzlich musste ich einen MySQL Dump einer relativ umfangreichen Datenbank für MSSQL machen. Zum Glück hatte ich direkt Zugriff auf den Windows-Server und obwohl die MySQL und MSSQL Feldtypen nur eingeschränkt übertragbar sind oder z.B. MySQL Kommentare von MSSQL nicht verarbeitet werden können, habe ich mir die Mühe gemacht und eine kleine Windows Batchdatei geschrieben.

Die Batchdatei erzeugt pro Tabelle, die in der Datenbank enthalten ist, eine einzelene SQL-Dump-Datei „tabellenname.sql“ mit vollständigen INSERT Statements für jede Zeile. So lassen sich auch große Backups etwas überschaubarer gestalten und für eventuelle Re-Importe einfacher einlesen.

Die Batchdatei ruft man idealerweise über die Kommandozeile (Windows CMD) aus dem Ordner MySQL-Verzeichnisbindump2dir.bat auf, denn dort befindet sich das MySQL-Eigene Programm mysqldump.exe, das benötigt wird.

Eine kleine Anpassung muss vom Benutzer noch vorgenommen werden, im Quellcode Zeile 10 und 11 müssen natürlich die eigenen MySQL-User und -Passwort Angaben eingetragen werden. Optional kann man in Zeile 18 noch bestimmte mysqldump Parameter ergänzen oder entfernen.

Zum Aufruf gibt man einfach folgendes ein: dump2dir.bat meinedatenbank C:sqldump

Anbei der benötigte Source von dump2dir.bat.

@echo off
REM 2011/07/28
REM Cornelius Rittner
REM dumping with complete INSERT statements for each row (--skip-opt)

IF "%~1" == "" GOTO INFO
IF "%~2" == "" GOTO INFO

setlocal
set mysqluser=root
set mysqlpass=foobarsomething

echo Selected Database: %~1
echo Target Directory: %~2

for /f "delims= tokens=*" %%T in ('mysql -u %mysqluser% -p%mysqlpass% -N -B -e "show tables from `%1`"') do (
	echo dumping %%T ...
	mysqldump -u %mysqluser% -p%mysqlpass% --compatible=mssql --skip-opt -r "%~2%%T.sql" %~1 %%T
)

endlocal

GOTO END

:INFO
echo dump2dir v.1.0
echo Three options are provided as default:
echo --compatible=mssql --skip-opt -r
echo.
echo --------------------------------------------------------
echo Please provide your database name and target directory
echo.
echo [Parameter 1] = database
echo [Parameter 2] = directory (without closing slash!)
echo.
echo Example: dump2dir "mydatabase" "D:mysqldump"
echo.

:END

Nächster in Artikel

Vorheriger in Artikel

Nach oben

© 2017 ggfx.org – golney graphics