Python

トップ > レビュー > Python

実践

いかにも洗練されていないコードなのですが、、mysqlのダンプファイルを解析してデータベース単位(split1.py)、テーブル単位(split2.py)のSQLスクリプトに分解するスクリプトです。

split1.py:

n = 0
fout = open('db_'+str(n)+'.sql','w')

for line in open('foo.dump','r'):
if line.startswith('CREATE DATABASE'):
n = n + 1
print n
fout.close()
fout = open('db_'+str(n)+'.sql','w')
fout.write(line)

split2.py:

n = 0
fout = open('table_'+str(n)+'.sql','w')

for line in open('db_1.sql','r'):
if line.startswith('DROP TABLE'):
n = n + 1
print n
fout.close()
fout = open('table_'+str(n)+'.txt','w')
fout.write(line)

できあがったSQLのスクリプトは、例えば以下のように利用できます。MySQLの側で大きなスクリプトファイルを受け取る事ができるのならば意味の無い処理ですが。

exec.sh:

for i in $(seq 1 429); do # 429
  echo ${i}
  mysql -uroot foo < table_${i}.sql
done

python2.6で検証しています。