| SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden. |
 |
|

18-10-2004, 21:00
|
|
Majestic
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 28
|
|
CSV Datei in MySQL importieren
Hi, hab schon länger hier im forum gesucht, nur leider haben alle Antworten bei mir nicht geholfen!
Hoffe ihr könnt mir weiter helfen:
Ich möchte eine csv datei in meine DB importieren. Script und file liegen im gleichen verzeichnis auf dem server.
hier das script, hoffe ihr könnt mir helfen:
PHP-Code:
$db_MenuTitle[0] = "Eintrag 1"; // Bezeichnung des Eintrags
$db_Hostname[0] = "localhost"; // Datenbank-Host
$db_UserName[0] = ""; // Benutzername
$db_Password[0] = ""; // Zugehoeriges Passwort
$db_Database[0] = ""; // Datenbank
$db_Table[0] = "termine_roh"; // Table, in den die CSV
$db_File[0] = "termine.csv"; // Verzeichnispfad
$select_db = 0;
// Connect zur Datenbank
mysql_connect($db_Hostname[$select_db], $db_UserName[$select_db],
$db_Password[$select_db]) ||
die("Can't Connect to Database: ".mysql_error());
mysql_select_db($db_Database[$select_db]);
// CSV-Datei in die Datenbank übertragen
$fp = fopen ("termine.csv","r");
$sql2 = "LOAD DATA LOCAL INFILE '$fp' INTO TABLE termine_roh
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'";
$result = mysql_query($sql2);
echo mysql_error();
echo $result;
als fehlermeldung bekomme ich:
Zitat:
You have an error in your SQL syntax.
Check the manual that corresponds to your MySQL server version for the right syntax
to use near ''' at line 2
|
Schonmal Danke für eure Hilfe!! EDIT: TobiaZ macht seine Umbrüche jetzt selber! 
Geändert von Majestic (18-10-2004 um 21:54 Uhr)
|

18-10-2004, 21:07
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Re: CSV Datei in MySQL importieren
und was steht in zeile zwei der CSV-datei ...?
(und in der davor/paar danach.)
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

18-10-2004, 21:09
|
|
Majestic
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 28
|
|
folgender Inhalt:
[QUOTE]
"01.10.2004","Bruchsal","Fabrik","Alternative mit DJ Mütze & DJ Matt Nu-Metal, X-Over, Independent Eintritt frei 21:00 - 4:00 Uhr"
"01.10.2004","Frankenthal","B9 - ehem. FUN","Ladys Night (Ladys erhalten freien Zutritt + 2 Freigetränke im Wert von je bis zu 3,00.-)"
"01.10.2004","Frankfurt","U 60311","6 Jahre U60311 pt.1 CARI LEKEBUSCH (Stockholm), CHRIS LIEBING (CL Recordings), MONIKA KRUSE (Terminal M), PIERRE & MARKY"
"01.10.2004","Heidelberg","8 Grad","HOUSE OF LOVE - DJ Jerome - ab 22h"
QUOTE]
wenn ich das file im phpmyadmin einfüge klappt es ohne problem.
hab auch die funktion fürs importieren "load data in ..." aus dem phpmyadmin kopiert!
|

18-10-2004, 21:22
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Re: CSV Datei in MySQL importieren
OK, seh grade, der fehler liegt in deinem script, nicht in den daten.
Zitat:
PHP-Code:
$fp = fopen ("termine.csv","r");
$sql2 = "LOAD DATA LOCAL INFILE '$fp' INTO TABLE...
|
du versuchst, einen dateizeiger an mysql zu übergeben - das kann natürlich nicht klappen.
davon, dass du in PHP eine datei geöffnet hat, weiß mysql selbstverständlich nichts.
bei LOAD DATA INFILE musst du den datei namen angeben.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

18-10-2004, 21:27
|
|
Majestic
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 28
|
|
habs jetzt soweit abgeändert:
PHP-Code:
$datei = "termine.csv";
$sql2 = "LOAD DATA LOCAL INFILE '$datei' INTO TABLE termine_roh
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"'
ESCAPED BY '\\' LINES TERMINATED BY '\r\n'";
geht aber immer noch nicht, wiederrum der gleiche fehler!
EDIT: TobiaZ macht seine Umbrüche jetzt selber! 
Geändert von TobiaZ (18-10-2004 um 21:50 Uhr)
|

18-10-2004, 21:31
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.190
|
|
Wäre es dir möglich, deinen Code evtl. vernünftig und sinngemäß umzubrechen?
Oder hast du einen 2000px Bildschirm?
Außerdem wäre es sinnvoll, wenn du die Query, die an die DB gesendet wird, postest, und nicht den PHP-Code mit Variablen.
|

18-10-2004, 21:37
|
|
Majestic
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 28
|
|
so hier die query:
LOAD DATA LOCAL INFILE 'termine.csv' INTO TABLE termine_roh FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\' LINES TERMINATED BY ' '
Kann es sein, das es an der letzten Anweisung liegt? Also dem Lines Terminated by ' '
da sollte nämlich" \r\n" stehen
Entschuldigt bitte den vergessenen Zeilenumbruch!
|

18-10-2004, 21:51
|
|
Majestic
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 28
|
|
wenn ich deinen code eingebe, bekomme ich die fehlermeldung in zeile 6 statt in zeile 2!
|

18-10-2004, 22:01
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.190
|
|
sorry, hatte es deswegen wieder gelöscht.
Code:
LOAD DATA
LOCAL INFILE 'termine.csv'
INTO TABLE termine_roh
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
so sah er aus, richtig?
Dann weißt du jetzt schonmal, wo der Fehler im Code liegt. Nimm mal bitte den gleichen code, aber escape mal bitte den \ in escaped by.
Im Manual hab ich was gelesen, dass die Zeichen in ESCAPED BY, LINES TERMINATED BY escaped werden müssen. wäre mal n versuch.
|

18-10-2004, 22:03
|
|
Majestic
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 28
|
|
escapen!?
sorry bin noch relativ neu im mysql
|

18-10-2004, 22:11
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.190
|
|
\ davor setzen
|

18-10-2004, 22:12
|
|
Majestic
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 28
|
|
|

18-10-2004, 22:13
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.190
|
|
nein, nicht nur den \ sondern den \ vor ein Zeichen. Lies mal selber im Manual, habs jetzt so genau nicht auf Lager.
|

18-10-2004, 22:16
|
|
Majestic
Newbie
|
|
Registriert seit: Sep 2004
Beiträge: 28
|
|
sorry wurd wohl nicht richtig dargestellt:
ESCAPED BY '\\' also zweimal "\"
|

18-10-2004, 22:22
|
TobiaZ
 Moderator
|
|
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.190
|
|
LOAD DATA
LOCAL INFILE 'termine.csv'
INTO TABLE termine_roh
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
Klappt bei mir wunderbar!
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|