CSV-Import klappt nicht
bulli
- datenbank
Hallo,
ich versuche krampfhaft, eine csv-Datei in eine MYSQL-DB einzulesen.
Die Datei liegt im selben Verzeichnis, wo auch das Script (upload.php) liegt.
Als Ergebis bekommen ich die Meldung 'Auswahl der Datenbank fehlgeschlagen'.
Der Connect mit der DB passt, da ich auf einer anderen Seite meine Daten abrufen kann.
Ich benutze eine User der alle Rechte hat.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>upload</title>
</head>
<body>
<?php require_once ('konfiguration.php');
$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);
// Nutzen von Datenbank (Name ist hinterlegt in Konstante MYSQL_DATENBANK
$db_sel = mysql_select_db( MYSQL_DATENBANK )
or die("kein connect");
$sql = "LOAD DATA local INFILE './test.csv' INTO TABLE 'tab_wetter' FIELDS TERMINATED BY '\;' ENCLOSED BY '' ESCAPED BY '\\' LINES TERMINATED BY '\n'";
$result = mysql_query($sql) or die ('Auswahl der Datenbank fehlgeschlagen');
echo "Datei eingelesen!";
?>
</body>
</html>
Gruß
Bulli
Hier noch ein Nachtrag, der vielleicht helfen kann:
... und zwar hab ich über phpmyadmin die Datei mal hochgeladen und er gibt mir da folgende Syntax aus:
LOAD DATA LOCAL INFILE 'C:\Dokumente und Einstellungen\bulli\Desktop\xampp\tmp\phpCC6.tmp' INTO TABLE tab\_wetter
FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY '\r\n'# Betroffene Datensätze: 9
Gruß
bulli
ich habs ... :)
$sql = "LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE tab_wetter FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY '\r\n'";
Hello,
$sql = "LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE tab_wetter FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY '\r\n'";
Da passt aber was nicht mit den Escapes. Drei \\ hintereinander sind irgendwie ungewöhnlich.
Und dass man die überhaupt brauchen würde, irritiert mich.
Ist das nicht das, was übrig bleiben sollte?
$sql = "LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE tab_wetter FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY '\r\n'";
Die Escape-Übung ist wirklich Morgengymnsatik fürs Gehirn. Gleich als nächstes kommt dann eine Regular Expression für den Kreislauf und er Adrenalinspiegel reicht wieder für den ganzen Tag.
Ein harzliches Glückauf
Tom vom Berg
... ich nutze die SQL-Anweisung innerhalb von PHP-Tags, Sonderzeichen müssen hier mittels \ maskiert werden.
Gruß Bulli
echo $begrüßung;
... ich nutze die SQL-Anweisung innerhalb von PHP-Tags, Sonderzeichen müssen hier mittels \ maskiert werden.
Soweit so richtig, aber drei davon in einer Reihe ergibt am Ende ein \ gefolgt von dem nach den \\ stehenden Zeichen.
$sql = "LOAD DATA LOCAL INFILE 'test.csv' INTO TABLE tab_wetter FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY '\r\n'";
Kürzen wir das mal auf das Wesentliche zusammen
$sql = "... ESCAPED BY '\' LINES TERMINATED BY '\r\n'";
ergibt sich nach dem Parsen durch PHP
... ESCAPED BY '' LINES TERMINATED BY '\r\n'
Du hast also nach dem ersten BY einen Stringanfang ', ein maskiertes ', ein Leerzeichen, die Zeichenfolge LINES TERMINATED BY, noch ein Leerzeichen und nun ein Stringende ', gefolgt von Zeilenumbruch und einem Stringanfang. Und nun?
echo "$verabschiedung $name";