非常に大きな .sql ファイルをデータベースにインポートしようとしています。ファイルは現在20GBの大きさです。コンソール mysql database < backup.sql で試しましたが、これには 24 時間以上かかり、mysql サーバーはもう反応しません。
このような大きなファイルをインポートするにはどうすればよいですか? 分割するのがいいと思いますが、どうすれば正しく分割できますか?複数の挿入ステートメントを持つ 1 つのテーブルのみです。
MySQL には、API 駆動のテーブル挿入が言語に組み込まれています。下記参照。これを使用してください:http://dev.mysql.com/doc/refman/5.1/en/load-data.html
ファイルを挿入ステートメントから何らかの形式のcsvなどに再フォーマットする必要がありますが、これはRDBMSと通信する方法であるため、個々のステートメントよりもはるかに高速になるはずです「大量のデータをアップロードしようとしています、再イデックスと簿記のオーバーヘッドを最後まで節約し、十分なスペースがあることを確認し、いっぱいになるたびにではなく一度そのスペースを取得し、適切なロックなどを使用するようにしてください。」
SQL ファイルを分割して、データベースにインポートできます。
sqldump ファイルを分割する最も簡単な方法は、sqldumpsplitter
ソフトウェアのダウンロードリンクを使用することです。
または、この端末コマンドを使用して分割します
split -l 5000 ./path/to/mysqldump.sql ./mysqldump/dbpart-
ここで、5000 は sql コマンドの行数です。分割することをお勧めします。次の 2 つの引数は、それぞれソースと宛先のパスです。個々の分割ファイルには、末尾にアルファベットが追加された名前が割り当てられます。
この問題を抱えている他の人に役立つことを願っています。
テーブルをロックして、このテーブル データ ファイル (.frm、.MYI、.MYD) のコピーを作成するだけです。
すぐに、任意のデータベースにインポートできる準備が整ったデータ ファイルを取得します。
この方法は、myisam では非常にうまく機能します。innodbについてはわかりません。