データベースごとに分離する
reg="/^CREATE DATABASE .*\`[a-zA-Z0-9_]*\`.*/"
csplit -z -f mysqldump_ -k mysqldump.dump "$reg" {*}
mysqldump.dump:元のダンプファイル
mysqldump_00:コメントのみ
mysqldump_01~:各種データベース毎のファイル
ファイルにデータベースの名前を設定する
for file in $(ls -1 mysqldump_* )
do
fname=mysqldump
mv -v $file "${fname}_$(grep 'USE `' $file | sed -e 's@.*`\(.*\)`;@\1@ig')"
done
テーブルごとに分離する
for fname in $(ls mysqldump_*)
do
csplit -z -f ${fname}_ -k ${fname} "/^CREATE TABLE \`[a-zA-Z0-9_]*\`/" {*}
done
ファイルにテーブルの名前を設定する
for file in $(ls -1 mysqldump_*_* );
do
table_name=$(grep "CREATE TABLE" $file | cut -d '`' -f 2);
mv ${file} ${table_name}.sql;
done;
for file in $(ls -1 mysqldump_*_* )
do
# mv
fname=$( echo $file | sed -e "s@\(mysqldump_.*\)_[^_]*@\1@ig" );
mv -v $file "${fname}_$(grep 'CREATE TABLE `' $file | sed -e 's@.*`\(.*\)`.*@\1@ig')" ;
# done
done
CREATE と INSERT を分離
for file in $(ls mysqldump_*_*)
do
csplit -z -f ${file}_ -k ${file} "/^LOCK TABLES/" {2}
done