php+mysql バッチ挿入データの問題
データをバッチインポートするコードを書きました。
プロセスは次のようになります。まずデータ テーブル内のデータを読み取り、それから新しいテーブルに挿入します。
初めて全部読んでから、まとめて挿入しました。結果は間違っています。データ量が多すぎるためです。
2 回目はコードを変更し、最初に最初の 150 項目をインポートし、ユーザーが「続行」をクリックすると次の 150 項目がインポートされます。これを繰り返すと、通常は 450 ~ 600 個の項目がインポートされることがわかります。アイテムがインポートされると、エラーが報告されます。 300 個のアイテムをインポートした後、数秒待ってから「続行」をクリックします。インポートは正常に行われます。
エビさん、あるデータ テーブルから大量のデータを読み取り、それを別のデータ テーブルにインポートするというこの問題を解決する良い方法はありますか? ? ?
-----解決策---------
php.ini ファイルで max_execution_time 項目を見つけ、値をより大きな値に変更します
データのインポートにかかるおおよその時間を見積もり、対応する値を設定します。
これは私が少し前にやったことで、30000 に設定しました。
------解決策------------------
一般に、mysql コマンド ラインを使用してエクスポートし、次に mysql コマンド ラインを使用してインポートします (mysqldump、mysqlimport、source...)
または、phpmyadmin コードを使用してエクスポートとインポートを実行します (大規模なファイルが存在する場合)。テキスト、php.ini、memory_limit、upload_max_filesize のいくつかの設定に注意してください。)
------解決策----------------------
mysql に接続し、挿入操作を実行して終了します。間に合うように。
これは、mysql 接続の数に関係している可能性があります。
------解決策---------
学びましょう! !
------解決策---------
学ぶ
------解決策------------------
これは起こらないはずです。
通常、
を達成するには、PHP タイムアウトを 0 に設定し、読み取られるたびに挿入します。
ただし、ループするときは、メモリを制御することを忘れないでください。
さらに、レコード内に大きなフィールドがある場合は、SQL ファイルを生成してから、ソースを使用してインポートすることをお勧めします。ループを使用して、最大 10,000 件のレコードを処理しましたが、基本的には 1 回で完了します。何百ものエントリーで間違いを犯したとしても、そんなことは絶対に起こりません。
------解決策------------------
MySQL Enterprise Edition マネージャーを試してください。これはサポート操作です大量のデータを含む