-
Ist
fgets()
am besten dafür verwenden? Es ist eine gute Art, es zu tun. Eine andere Möglichkeit besteht darin, die gesamte Datei mitfile()
in ein Array einzulesen , und durchlaufen Sie dann das Array mitforeach()
. -
Muss ich einen Rückruf einbauen? Nein. Führen Sie die Abfrage einfach aus, nachdem Sie alle Zeilen aus der Datei gelesen haben.
-
Wo anfangen? Wenn der Zähler die Stapelgröße erreicht, führen Sie die Abfrage aus. Setzen Sie dann den Zähler wieder auf
0
und setzen Sie die Abfragezeichenfolge auf den Anfangswert zurück. Schließlich müssen Sie am Ende der Schleife die Abfrage mit den verbleibenden Werten durchführen (es sei denn, die Dateigröße war ein genaues Vielfaches der Stapelgröße, in diesem Fall bleibt nichts übrig).
$batch_size = 100;
$counter = 0;
//instead of executing query one by one,
//let us prepare 1 SQL query that will insert all values from the batch
$sql_prefix ="INSERT INTO workorderstest(id,parentid,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10) VALUES ";
$values = "";
while (($line = fgets($handle)) !== false) {
$values .= "($line),";
$counter++;
if ($counter == $batch_size) {
$values = substr($values, 0, strlen($values) - 1);
$conn->query($sql_prefix . $values) or die($conn->error);
$counter = 0;
$values ="";
}
}
if ($counter > 0) { // Execute the last batch
$values = substr($values, 0, strlen($values) - 1);
$conn->query($sql_prefix . $values) or die($conn->error);
}