# MySQL: Wie CSV Dateien importieren?



## liz78x (16. April 2010)

Hallo,

kann mir jemand sagen wie man CSV-Dateien in eine MySQL-Datenbank importieren kann? 
Ich benutze auf meinem Rechner xammp, möchte die Datei also lokal auf meinem Rechner importieren.

MFG
Liz


----------



## Artorius (17. April 2010)

Hi,
Dafür gibt es das mysqlimport - Tool : http://dev.mysql.com/doc/refman/5.1/en/mysqlimport.html

Grüße!


----------



## liz78x (17. April 2010)

Hallo und danke schonmal für die ANtwort. Doch wie geht das genau? Ich kenne mich mit mysql nicht so gut aus...

Muss ich evtl in phpmyadmin auf sql klicken, und dann etwas wie folgt eingeben?!

shell> mysqlimport  db_name textfile1


----------



## Artorius (17. April 2010)

Prinzipiell ja... Kann man nicht pauschal beantworten, da ich weder deine Datenbank noch deine CSV Daten kenne...  Beachte jedenfalls dabei, dass der Dateiname dem Tabellennamen entsprechen sollte. (Wie du auch in dem Link nachlesen kannst)

Ich meine mich aber dunkel zu erinnern, dass phpAdmin auch eine Funktion bereit stellt, über MySQL->SQL->Import direkt eine CSV Datei zu importieren. Bin mir aber nicht sicher, da es schon en Weile her ist, dass ich das ganze genutzt habe...

Grüße!


----------



## liz78x (17. April 2010)

Hmm das klappt alles nicht. Ich habe es mal mit diesem Code versucht:

LOAD DATA LOCAL
        INFILE 'daten.csv'
        REPLACE
        INTO TABLE daten2
        FIELDS
                TERMINATED BY ';'
                OPTIONALLY ENCLOSED BY '"';

Doch es kommen immer wieder Fehlemeldungen. Wo muss sich die Datei daten.csv eigentlich befinden? Ich habe sie in den Ordner "xammp/mysql" gepackt... muss sie evtl woanders sein?


----------



## Artorius (17. April 2010)

Dann gib doch mal den Pfad der Datei mit an...


----------



## liz78x (17. April 2010)

Hab ich auch schon versucht... meistens kommt diese Fehlermeldung:

#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 '-daten2.csv FIELDS' at line 4

Hier der Code:

LOAD DATA LOCAL
INFILE 'daten.csv'
REPLACE
INTO TABLE daten2.csv
FIELDS
TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '"';


----------



## Artorius (17. April 2010)

liz78x hat gesagt.:


> #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 '-daten2.csv FIELDS' at line 4
> 
> Hier der Code:
> 
> ...



Naja steht doch da wo der Fehler ist. 

```
"INTO TABLE daten2.csv"
```
Das csv muss doch logischerweise da weg, weil du doch etwas in die Tabelle daten2 importieren willst, oder?


----------



## liz78x (17. April 2010)

Das klappt alles nicht. Kann sonst noch wer antworten?

Müsste denn nicht ein Create-Befehl in dem Code auftauchen? Falls ich vorher die Tabelle manuell anlegen soll, was muss ich als Anzahl der Felder eingeben? Die Anzahl meiner Spalten? Falls ja, wäre das  nicht gut denn ich müsste die Spalten erstmal zählen, das sind einige hundert Spalten...

Ich habe ja keine Ahnung von MySQL, aber das es so kompliziert ist eine CSV Datei zu importieren hätte ich nicht gedacht!


----------



## Martin Kunz (14. Mai 2010)

(wenig KnwoHow von mySQL) + (wenig Ahnung von PHP) + (import von Excel) = http://www.dbTube.org 

ich denke dies könnte Dir helfen. Sorry für die vereinfachte Formel


----------



## sight011 (15. Mai 2010)

Hui Dank Dir - Muss ich eigentlich irgendwas über die Möglichen verwendeten Zeichen wissen?

Gehen in Datenbanken Umlaute äüö beispielesweise Problemlos? Muss ich sowas vorher festlegen (soe wie UTF-8 bei Pages, die den Datensatz von vorherien festlegen)?

Kann ein Datensatz beispielsweise nur eine bestimmte länge haben?

Wird so ein Datensatz immer nur per php eingebunden?


Sorry bin ein absoluter Noop, was das Thema angeht!! Werd mir wohl aml endlich Zeit nehem müssen das Buch hier auf dem Tisch zu lesen, aber diese Fragen würden mich im Vorfeld brennend interesssieren


----------



## Martin Kunz (15. Mai 2010)

Hi,

in der Regel sind die Datenbanken bei den "typischen" Hoster wie Hetzner, 1&1 oder zur Not auch Freenet darauf 
vorbereitet ( sorry für den Seitenhieb auf Freenet - hat seine Gründe  )

Dies sind auf UTF-8 oder gleichwertig eingestellt. Wenn du dann dbTube verwendest must du nichts machen.
Excel liefert die Dten ebenfalls korrekt aus.
Somit hast du 

Excel (äöü) => PHP (äöü) => mySQL (äöü)

da geht nichts verloren. Desweiteren kann man dann auch solche Zeichen wie ,;" oder TAB verwenden
ohne sich den Kopf zu zerbrechen -was bei CSV nicht ganz so einfach ist. Da muss man schon ein
bischen mehr nachdenken/ausprobieren.

Gruß

   Martin


----------

