Пакетный скрипт mysqldump для вывода отдельных таблиц для выборочного восстановления - PullRequest
1 голос
/ 20 февраля 2012

В настоящее время у нас есть пакетный скрипт DOS, который выполняет дамп MySQL для всей базы данных в одном файле. Я хотел бы разбить базу данных по таблицам, чтобы в каждой папке «date» была папка «db», содержащая отдельные дампы таблиц. Это позволяет нам восстанавливать выбранные таблицы, а не восстанавливать всю базу данных.

@echo off
md C:\backups\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%
cd C:\Program Files\MySQL\MySQL Workbench 5.2 CE\
mysqldump -h -u -p --databases db0 > c:\backups\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%\db0.sql
mysqldump -h -u -p --databases db1 > c:\backups\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%\db1.sql

Я нашел возможное решение с помощью оболочки: https://stackoverflow.com/a/134296/679449

Похоже, что это позволило бы мне экспортировать в отдельные таблицы, однако я не уверен, как / можно ли писать в пакетном режиме. Любая помощь с этим приветствуется.

1 Ответ

0 голосов
/ 21 февраля 2012

Мое решение:

@echo off
md C:\backups\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%\db0
md C:\backups\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%\db1

cd C:\Program Files\MySQL\MySQL Workbench 5.2 CE\

mysql -s -e "SHOW TABLES FROM db0" -u -p --skip-column-names > C:\backups\tables.txt
for /f %%A in (C:\backups\tables.txt) DO (mysqldump -h -u -p db0 %%A > c:\backups\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%\db0\%%A.sql)

mysql -s -e "SHOW TABLES FROM db1" -u -p --skip-column-names > C:\backups\tables.txt
for /f %%A in (C:\backups\tables.txt) DO (mysqldump -h -u -p db1 %%A > c:\backups\%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%\db1\%%A.sql)
...