Hi!
Ich hab eine Textdatei und möchte diese Daten in eine MySQL-Datei importieren. Ich dachte mir, dass ich um den Speicher zu schonen (65 000 Zeilen) die Datei zeilenweise einlesen und die Zeile gleich wieder löschen lasse (die Datei verarbeitet, um nicht die maximal-Zeit zu überschreiten immer 1000 Zeilen ab).
Eine (erfundene) Zeile würde z.B. so aussehen:
Herr Thomas Maier Bummerstrasse 34a 45376 Bummental 0431 57645656 0431 54654555 ThomasMaier@bummerhost.de
Mein Ansatz war dieser:
$handle = fopen ("file.txt", "r");
for(i=0; i<1000; i++) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
$data = explode(" ", $buffer);
## Herr/Frau
if($data[0]=="Herr") $data[0] = 1;
elseif($data[0]=="Frau") $data[0] = 0;
else die('Fehler bei der Verarbeitung');
## schon vorhanden?
$result = mysql_query("SELECT email_adress FROM ".$tablename." WHERE email_adress='".addslashes($data[14])."'");
if($result) echo addslashes($data[14])." ist bereits eingetragen<br>";
else {
$query = "INSERT INTO ".$tablename." (male, firstname, lastname, streetadress, streetnumber, postcode, city, area_code1, phone1, area_code2, phone2, area_code_fax, fax, email_adress)".
"VALUES ('".addslashes($data[0])."', '".
addslashes($data[1])."', '".
addslashes($data[2])."', '".
addslashes($data[3])."', '".
addslashes($data[4])."', '".
addslashes($data[5])."', '".
addslashes($data[6])."', '".
addslashes($data[7])."', '".
addslashes($data[8])."', '".
addslashes($data[9])."', '".
addslashes($data[10])."', '".
addslashes($data[11])."', '".
addslashes($data[12])."', '".
addslashes($data[13])."', '".
addslashes($data[14])."')";
$result = mysql_query ($query) or die ("Der Datenbankeintrag hat leider nicht funktioniert.");
}
}
}
fclose ($handle);
Kann dies funktionieren?
Wie kann ich denn die eingelesene Zeile löschen???
danke
Roland