非常に大きな sql ファイルをテスト db サーバーにインポートしたいのですが、ファイルは約 50GB です。問題はmysql -uuser -p < sqlfile.sql
、ファイルの読み込み時間自体が原因で、非常に長い時間がかかることです。
したがって、ファイルを100MB程度の非常に小さなチャンクに分割したいと思いますsplit -bytes=100M
が、問題は、分割がSQLステートメントに合わせられないことです(ファイル境界にまたがる挿入ステートメントが壊れています)。
私の質問は、コマンドラインで複数のファイルをストリーミングする方法はありますか? 何かのようなもの
mysql -user -p <1.sql < 2.sql < 3.sql
などなど、それが可能であれば、ディレクトリ内のすべてのファイルに対して使用xargs
してfor
ループするシェルスクリプトを実行できますか?
編集: ファイルを分割しようとする私の試みは、この投稿、How to import LARGE sql files into mysql tableによって管理されています。問題は私のものと同じようです。さて、テスト サーバーは 8 GB、Xeon Quadcore で、20 コア 144 GB の別のサーバーで同じことを試しましたが、11 時間のランタイムで問題なく終了しました (多くの CPU/RAM を集中的に使用するジョブが進行中の共有サーバー... )。テストサーバー、プロセスはまだ完了していません。したがって、RAM + ファイルの読み込みのオーバーヘッドだと思います。私が間違っている場合は修正してください。