ファイルからデータ行を読み取って分析し、ローカルの MySQL データベースに 1 つずつ挿入する PHP スクリプトを実行します。
$mysqli = new mysqli($db_host, $db_user, $db_password, $db_db);
if ($mysqli->connect_errno) {
echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
} else {
/* As long as there is data in the file */
while(...) {
... // analyse each row (contained in an object $data)
/* Write it to the database table. */
$mysqli->query($data->getInsertQuery($db_table));
}
}
4000 万のデータ行があります。最初の数百万のデータセットは非常に高速に挿入されましたが、最後の 6 時間で挿入されたのは 200 万だけで (私は現在 3000 万です)、どんどん遅くなっていくようです (これまでのところ、インデックスは定義されていません! )。
これがテーブルにデータを書き込むより効率的な方法であるかどうか疑問に思っていました。可能であれば、余分な (一時) ファイルのないソリューションを希望します。