Как запланировать резервное копирование базы данных MySQL по одной таблице на файл в Windows? - PullRequest
0 голосов
/ 17 мая 2018

Я использую MySQL Server 5.5 и мне нужно запланировать ежедневное резервное копирование базы данных. В настоящее время я делаю следующее в командном файле:

set currdate=%date:~4%
Set FileDate=%currdate:/=_%

mysqldump -u root-proot db > "C:\backup\database\db%FileDate%.sql"

Экспортирует все таблицы в один файл. Я хочу экспортировать один файл в таблицу.

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Поскольку вы не указали, что не так с предоставленным ответом, вот аналогичный ответ, (обратите внимание, что это полностью не проверено) :

@Echo Off
Rem modify as necessary
Set "buDest=C:\backup\database"
Set "dbName=db"
Set "dbPass=root"
Set "dbUser=root"
Rem If binaries are not in %CD% or %PATH% modify the Set line below
Rem     Example: Set "sqlBin=C:\Program Files\MySQL\MySQL Server 5.5\bin"
Set "sqlBin=."

Set "dStamp="
For /F "Tokens=1-3 Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null') Do If Not Defined dStamp Set "dStamp=%%A_%%B_%%C"

If Not Exist "%buDest%\" MD "%buDest%" 2>Nul || Exit /B

"%sqlBin%\mysql" --user=%dbUser% --password=%dbPass% -D %dbName% -Bse "Show Tables";|^
 For /F "Skip=3 Delims=| " %%A In ('FindStr "^|"') Do (
    mysqldump --user=%dbuser% --password=%dbpass% %%A >"%buDest%\%dbName%-%%A-%dStamp%.sql")

Простоубедитесь, что данные значений в строках 3, 4, 5, 6 и, возможно, 9 изменены при необходимости

0 голосов
/ 20 мая 2018

Следующее выводит все имена таблиц сначала во временный файл, а затем перебирает их, сбрасывая каждое из них в файл с соответствующим именем:

@echo off
set currdate=%date:~4%
set filedate=%currdate:/=_%
mysql --skip-column-names -u root -proot db -e "show tables;" > tables.tmp
for /f "skip=3 delims=|" %%table in (tables.tmp) do (
  mysqldump -u root -proot db %%table > "C:\backup\database\db_%%table_%filedate%.sql"
)
del tables.tmp
...