他のサーバーの新しいデータベースにロードしたい巨大な(1GB以上の)データベースダンプがあります。行ごとに解析してそれぞれをmysqlに実行しようとしましたが、残念ながら、行がコマンドに均等に分割されず、不完全なコマンドで失敗するだけです。
filename='/var/test.sql'
fp = open(filename)
while True:
a = fp.readline()
if not a:
break
cursor.execute(a) #fails most of the time
また、それを呼び出すためにすべてのものをメモリにロードするには大きすぎます。さらに、pythonMySQLdbモジュールはsourceコマンドをサポートしていません。
編集済み
ファイルには、一連の挿入ステートメントと作成ステートメントが含まれています。失敗するのは、生のテキストを含む大きなテーブルの挿入です。生のテキストにはあらゆる種類のセミコロンと改行が含まれているため、それに基づいてコマンドを分割するのは困難です。