システムトラブルの原因を探るためにデータベースのバックアップを確認したい。
ダンプファイルから特定のテーブルだけ検証環境へインポートしたい。
しかしダンプファイルが数ギガバイトもある!
そんなときに便利なのがこのスクリプトです。
ダンプファイルをテーブルごとに分割してくれます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
# MySQLダンプファイルをテーブルごとに分割する # # 引数1:ダンプファイル(gzは解凍しておく) # 引数2:出力先ディレクトリ(なければ自動で作成される) # # 例:./split_dump.sh dump/all_dump.sql table_sql csplit $1 '/DROP TABLE IF EXISTS/' {*} > /dev/null rm xx00; files=`find ./ | sed 's!^.*/!!' | grep 'xx.*'` for filepath in $files; do if [[ "$filepath" =~ xx.* ]]; then tableName=$(head "./"${filepath} | grep S\ ` | cut -d"`" -f2) #echo $filepath": "${tableName} mv $filepath ${tableName}".sql" fi done mkdir -p $2 mv *.sql $2 |
split_dump.shとでも名付けて保存して、実行権限を与えましょう。
使い方は
1 |
./split_dump.sh ダンプファイル(sql) 出力先ディレクトリ |
例:
1 |
./split_dump.sh dump/all_dump.sql table_sql |