LoginSignup
1
1

More than 5 years have passed since last update.

MySQLから特定のテーブルをダンプ、リストアするバッチファイル

Last updated at Posted at 2017-09-01

MySQLから特定のテーブルのdump、restoreをしたいと思い、batファイルを作りました。
自分用にメモ。

初期設定

以下変数を設定する。
binPath=XXXX #MYSQL\binのパス
dbName=XXXX #データベース名
tmpFile=target_ #dump対象のテーブル一覧を出力するファイル名の接頭辞

使い方

  1. batファイルを開く
  2. モードを選択してください(dump:1 restore:2): どちらかを選択
  3. (dumpの場合)ダンプを取りたいテーブル名を指定
    ※例えば「m_」と入力すると文字列「m_」が含まれるすべてのテーブル、ビューが対象となる。
    batファイルと同じ場所に、対象テーブル一覧を記載したファイル(target_XXX.txt)とdump(dump_XXX.sql)が作成される。
  4. (restoreの場合)「dump_」以降のダンプファイル名を入力してください(拡張子入力不要)
mysqldump&restore.bat
@ECHO OFF

REM 遅延環境変数を有効化
SETLOCAL enabledelayedexpansion

REM 各種設定
SET binPath=XXXX
SET filePath=%~dp0
SET dbName=XXXX
SET tmpFile=target_
SET tables=

REM モード選択
SET /P mode="モードを選択してください(dump:1 restore:2): "

IF "%mode%" EQU "1" (
    ECHO mode:dump

    :DUMP
    SET /P tableName="テーブル名を入力してください: "

    REM カレントディレクトリをMySQL\binへ変更
    cd %binPath%

    REM バックアップ対象を抽出
    mysql -u root -h localhost -N information_schema -e "SELECT table_name FROM information_schema.tables WHERE table_schema = '%dbName%' AND table_name LIKE '%%!tableName!%%'" > %filePath%%tmpFile%!tableName!.txt

    FOR /F %%a IN (%filePath%%tmpFile%!tableName!.txt) DO (
      IF "!tables!" EQU "" (
        SET tables=%%a
      ) ELSE (
        SET tables=!tables! %%a
      )
    )

    mysqldump -u root -h localhost %dbName% !tables! > %filePath%dump_!tableName!.sql

    ECHO dump作成完了しました

    SET /P contDump="続けてdumpしますか?(y/n): "
    IF "!contDump!" EQU "y" (
        GOTO DUMP
    ) ELSE (
        GOTO END
    )

) ELSE IF "%mode%" EQU "2" (
    ECHO mode:restore

    :RESTORE
    SET /P dumpFile="「dump_」以降のダンプファイル名を入力してください(拡張子入力不要):"

    ECHO restore start...
    mysql -u root -D %dbName% < %filePath%dump_!dumpFile!.sql
    ECHO restore end

    SET /P contRest="続けてrestoreしますか?(y/n): "
    IF "!contRest!" EQU "y" (
        GOTO RESTORE
    )
)

:END
ENDLOCAL

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1