CSV-Import mit MySQL?

CSV-Import mit MySQL?

am 15.02.2005 15:49:07 von anja.laenge

Hallo,

vorweg: ich habe den Punkt 17.3 der FAQ gelesen ;-)
Gibt es noch andere Möglichkeiten des CSV-Imports? Das Beispiel aus der
FAQ funktioniert so nicht, vermutlich weil die Tabelle zusätzlich noch
eine id-Spalte enthält (AutoIncrement), die in der csv nicht enthalten
ist. Beim Import mit MyQL-Front werden die Spalten vorher zugeordnet,
kann man das irgendwie nachbilden?

Danke vorab ;-)
Anja

Re: CSV-Import mit MySQL?

am 15.02.2005 16:02:04 von Carsten Wiedmann

Anja Länge schrieb:

> Gibt es noch andere Möglichkeiten des CSV-Imports? Das Beispiel aus
> der FAQ funktioniert so nicht, vermutlich weil die Tabelle
> zusätzlich noch eine id-Spalte enthält (AutoIncrement), die in der
> csv nicht enthalten ist. Beim Import mit MyQL-Front werden die

Gibt's in der FAQ keine Link zur MySQL-Doku die den Befehl genau
beschreibt?

| LOAD DATA INFILE 'foo.txt'
| INTO TABLE `foo` (col1, col2, ...)
^^^^^^^^^^^^^^^

Gruß
Carsten

Re: CSV-Import mit MySQL?

am 15.02.2005 16:32:09 von anja.laenge

Carsten Wiedmann schrieb:

> > Gibt es noch andere Möglichkeiten des CSV-Imports? Das Beispiel aus
> > der FAQ funktioniert so nicht, vermutlich weil die Tabelle
> > zusätzlich noch eine id-Spalte enthält (AutoIncrement), die in der
> > csv nicht enthalten ist. Beim Import mit MyQL-Front werden die
>
> Gibt's in der FAQ keine Link zur MySQL-Doku die den Befehl genau
> beschreibt?

Doch, ist aber veraltet. Korrekt wäre
http://dev.mysql.com/doc/mysql/en/load-data.html
....aber da hatte ich auch nichts gefunden.

> | LOAD DATA INFILE 'foo.txt'
> | INTO TABLE `foo` (col1, col2, ...)

Hmmm... danke erstmal. Er nimmt es zwar immer noch nicht, aber immerhin
ein Anhaltspunkt.


Anja

Re: CSV-Import mit MySQL?

am 15.02.2005 16:47:27 von anja.laenge

Ich schrieb:

> http://dev.mysql.com/doc/mysql/en/load-data.html
> ...aber da hatte ich auch nichts gefunden.

....weil Tomaten auf den Augen. Ich nehme alles zurück und behaupte das
Gegenteil.


Anja

Re: CSV-Import mit MySQL?

am 16.02.2005 00:28:30 von anja.laenge

Ich schrieb:

> Hmmm... danke erstmal. Er nimmt es zwar immer noch nicht, aber immerhin
> ein Anhaltspunkt.

Irgendetwas mache ich immer noch falsch und ich finde den Fehler nicht.
Mein MySQL-Statement sieht derzeit so aus:

LOAD DATA LOCAL
INFILE 'import.csv'
REPLACE
INTO TABLE `basis2` (`bez`, `date`, `time`, `value`, `serial`)
FIELDS
TERMINATED BY ';'

erste Frage: wenn ich das LOCAL setze, wo muß dann die Datei liegen? Im
Root-Verzeichnis meines Servers?
zweite Frage: ich bekomme eine Fehlermeldung "nativecode=1064 ** 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 'FIELDS
TERMINATED BY ';''
Was ist falsch?

Wahrscheinlich sehe ich gerade den wald vor lautter Bäumem nicht, aber
ich komme nich weiter...


Anja

Re: CSV-Import mit MySQL?

am 16.02.2005 01:19:33 von Carsten Wiedmann

Anja Länge schrieb:


> Irgendetwas mache ich immer noch falsch und ich finde den Fehler
> nicht. Mein MySQL-Statement sieht derzeit so aus:
> [code]
> erste Frage: wenn ich das LOCAL setze, wo muß dann die Datei liegen?
> Im Root-Verzeichnis meines Servers?

"LOCAL" gibt an, dass die Datei vom MySQL-Client kommt. Im Falle eines
PHP-Scriptes dann relativ zum aktuellen Arbeitsverzeichnisses des
Scriptes. Oder halt eine absolute Angabe.


> zweite Frage: ich bekomme eine Fehlermeldung "nativecode=1064 ** You
> ...
> Was ist falsch?

| LOAD DATA LOCAL INFILE 'import.csv'
| REPLACE INTO TABLE `basis2`
| FIELDS TERMINATED BY ';'
| (`bez`, `date`, `time`, `value`, `serial`)


Gruß
Carsten

Re: CSV-Import mit MySQL?

am 16.02.2005 09:09:45 von joe

Anja Länge wrote:
> Ich schrieb:
>
>
>>Hmmm... danke erstmal. Er nimmt es zwar immer noch nicht, aber immerhin
>>ein Anhaltspunkt.
>
>
> Irgendetwas mache ich immer noch falsch und ich finde den Fehler nicht.
> Mein MySQL-Statement sieht derzeit so aus:
>
> LOAD DATA LOCAL
> INFILE 'import.csv'
> REPLACE
> INTO TABLE `basis2` (`bez`, `date`, `time`, `value`, `serial`)
> FIELDS
> TERMINATED BY ';'
>
> erste Frage: wenn ich das LOCAL setze, wo muß dann die Datei liegen? Im
> Root-Verzeichnis meines Servers?
> zweite Frage: ich bekomme eine Fehlermeldung "nativecode=1064 ** 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 'FIELDS
> TERMINATED BY ';''
> Was ist falsch?
>
> Wahrscheinlich sehe ich gerade den wald vor lautter Bäumem nicht, aber
> ich komme nich weiter...
>
>
> Anja
Moin, Moin,

der Server erwartet die Datei aus dem Client und der Client möchte den
Pfad zur Datei wissen ( so was aber auch ).
Falls die Datei im Startverzeichnis ( Aktuelles Verzeicnis beim start
von mysql ) funktioniert Dein Aufruf, aber ich gebe grundsätzlich immer
den kompletten Pfad an, smit funktioniert es auch mal wenn ich nicht
egrade im Dir. stehe. Auf einem WEB Server gilt das ebenfalls.


Hoffe damit weitergeholfen zu haben.

Einen angenehmen Tag noch.


--
Best regards / Mit freundlichen Gruessen

Joachim Misselbeck

Zitat:
Die analytische Maschine (der Computer) kann nur das ausführen, was wir
zu programmieren imstande sind. (Ada Lovelace)

Re: CSV-Import mit MySQL?

am 16.02.2005 14:47:58 von Detlef Sax

On 16 Feb 2005 00:19:33 GMT, Carsten Wiedmann wrote:
>> Was ist falsch?
>
>| LOAD DATA LOCAL INFILE 'import.csv'
>| REPLACE INTO TABLE `basis2`
>| FIELDS TERMINATED BY ';'


>| (`bez`, `date`, `time`, `value`, `serial`)

Das sind doch die Felder?
Oder habe ich da Verständisschwiergkeiten?
FIELDS TERMINATED BY ','

Und eine Zeile ist doch eine row.
Detlef

Re: CSV-Import mit MySQL?

am 16.02.2005 14:57:36 von anja.laenge

Carsten Wiedmann schrieb:

> | LOAD DATA LOCAL INFILE 'import.csv'
> | REPLACE INTO TABLE `basis2`
> | FIELDS TERMINATED BY ';'
> | (`bez`, `date`, `time`, `value`, `serial`)

Danke ;-)


Anja

Re: CSV-Import mit MySQL?

am 16.02.2005 15:02:44 von anja.laenge

Detlef Sax schrieb:

> >| (`bez`, `date`, `time`, `value`, `serial`)
>
> Das sind doch die Felder?

Deren Namen. Oder besser Spaltennamen.

> FIELDS TERMINATED BY ','

nein, ';'
Das da oben sind die Namen der Spalten in die die Daten sollen... die
Daten sehen dann z.B. so aus GLU;15.02.2005;12:10;114;RCL0033BV und da
sind die Felder durch Semikolon getrennt.

Bevor jetzt Kommentare kommen: ich weiß, daß es unelegant ist, das Datum
so in MySQL zu verwenden.

Anja