Du willst also LOAD DATA INFILE, vermutlich, weil du das Statement nicht kennst, ebensowenig wie das Kommandozeilenprogramm mysqlimport, oder die die Voraussetzugen für den Einsatz dieser Alternativen fehlen.
Du versuchst zu viel auf einen Schlag ablaufen zu lassen, bzw. versuchst dies in einer ungünstigen Umgebung. Wenn du das Script von der Kommandozeile aus startest ist per Default keine Laufzeitbegrenzung aktiv. Innerhalb eines Webservers sorgt diese Begrenzung dafür, dass hängengebliebene Scripte entsorgt werden. Wenn du auf die Kommandozeile wechseln kannst, solltest du das tun. Ansonsten könntest du probieren, max_execution_time hochzusetzen. Innerhalb des Scripts mit ini_set(), oder auch außerhalb. Sollten dir (beim Provider) keine der Möglichkeiten zur Verfügung stehen, wird dir nichts anderes übrigbleiben, als mehrere Durchläufe mit kleineren Häppchen zu starten.
Ok, aber wie mach ich das? Wie kann ich z.B. nur die zeilen 2-10 und dann 11-20 auslesen und in die DB eintragen?
Hatte jetzt auch mal folgendes ausprobiert:
$ok = '1';
while($ok < $wieviel)
{
$row = 1;
$handle = fopen ("$ok.csv","r");
while ($handy = fgetcsv ($handle, 1000, ";"))
{
$insert_csv = "INSERT INTO affili_handy ";
$insert_csv .= "(id, artikelnr, titel, beschreibung, preis, bild, link, pcid, pcname, anbieter) ";
$insert_csv .= "VALUES ";
$insert_csv .= "('','$handy[0]','$handy[1]','$handy[2]','$handy[3]','$handy[4]','$handy[5]','$handy[6]','$handy[7]','a$ok')";
mysql_query($insert_csv);
}
fclose ($handle);
}
$ok++;
Hatte den Code im netz gefunden und nur ein wenig angepasst um zu sehen wie es da abläuft, diesmal wird zwar etwas in die DB eingetragen, aber MASSENHAFT. 3 CSV-Dateien sollten importiert werden testweise, das wären ~45 Einträge in der DB, aber das Script hört da ganr nicht mehr auf zu laden und nachdem ich 10 Minuten später in die DB schau sind da über 600.000 Einträge in der Datenbank!