PHP-Code:
Fehlernummer: 1105
Fehlertext: File '.\projekt7\ImportCsv.csv' not found (Errcode: 2)
Da bekam ich immer die oben genannte Fehlermeldung.
Wenn ich die Csv Datei manuell ins Datenbank Verzeichnis projekt7 gelegt habe, dann ging Load Data infile.
Jetzt habe ich folgendes gemacht, damit es auch immer automatisch funktioniert:
PHP-Code:
$NameDerDatei = $this->NameDerImportCsv; // Den Pfad und Namen angeben, von der Csv Datei
// die importiert werden soll.
$tabelle = $this->tabelle; // Den Tabellen Namen angeben.
$DateiImport = tempnam ("/tmp", "temp"); // Erzeugt eine Datei mit eindeutigem Dateinamen
$wert = copy($NameDerDatei, $DateiImport); // Die bestehende Csv Datei nach Temp kopieren
if (!$wert) { // Wenn copy Fehlerhaft war,
$this->bericht['Csv Datei temporär kopiert'] = "Fehler"; // dann Fehler melden und abbrechen
return false;
}
// Achtung -> Slasch muß anders rum, hab ich jetzt nur hier im forum so gemacht
// weil es sonst nicht lesbar ist.
$DateiImport = str_replace('//', "////", $DateiImport); // Damit der query den Pfad erkennt.
$query = "LOAD DATA INFILE '".$NameDerDatei."'
REPLACE
INTO TABLE `".$tabelle."`
FIELDS
TERMINATED BY ';'
ENCLOSED BY '\"'
ESCAPED BY '////'
LINES TERMINATED BY '\\r\\n'";
// Achtung -> Slasch bei escaped muß genau andersrum.
// Hab ich da auch nur so gemacht, weil es sonst nicht lesbar ist.
$komando = new MysqlBefehl($this->_mysql); // Denn mysql query an die DB senden
$komando->query($query);
$komando->clear();
unlink($DateiImport); // Temp Datei wieder löschen
return true;
Man darf ja keine Csv Datei in das Datenbankverzeichnis verschieben.
Wie macht man das sonst?
Kommentar