• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

SQL: Datenimport aus CSV

Bourbon

Mitglied
Hallo Leute,

ich wollte gerade mal zum Testen Daten aus einer eigens dafür erstellten CSV-Datei importieren.
Dabei kommt aber immer der Fehler "Ungültige Anzahl an Spalten in Zeile 1".
Jetzt weis ich aber nicht, wie ich das beheben kann oder weshalb der Fehler auftritt.

Ich hänge mal ein Bild mit der DB-Struktur sowie die CSV-Datei an.
Vielleicht wisst ihr, wo der Fehler liegt.

//EDIT
Kann die CSV nicht hochladen, daher poste ich mir mal den Inhalt.

;Max;Mustermann;+4915166699666;01.01.1914;mustermä[email protected]#
 

Anhänge

  • DB Struktur.png
    DB Struktur.png
    23 KB · Aufrufe: 5
Werbung:
Leider hatte das auch nicht das Problem gelöst.
Anbei ein Screenshot, mit den "alten" Daten und einem führenden ; vor dem Text.

Man beachte, dass der zweite Eintrag in die DB übernommen wird, der erste nicht.
Im zweiten Eintrag steht beim Name auch "Max" und beim ersten Eintrag ";Marta".
Sowie die Email-Adresse beim 1. Eintrag "[email protected]#" heißt und beim 2. "[email protected]".

Irgendwie ist da der Wurm drin.

Mir fällt gerade auf, dass die komplette erste Zeile als ein einzelner Wert dargestellt wird, also die Punkte nicht voneinander getrennt sind.
 

Anhänge

  • Fehler mit DB Strukur.png
    Fehler mit DB Strukur.png
    191,9 KB · Aufrufe: 7
Werbung:
Ich meine bei einer csv kannst du auch jeden Wert in eine spalte packen, wenn du die CSV Datei umbenennst in .txt und dann mal öffnest wird drin stehen wert1;wert2;wert3;.....

So wie du das nun in der CSV stehen hast würde ich auch alles als einen Wert betrachten. Versuch mal eine txt Datei zu importieren, da kannst du denn
;wert1;wert2;wert3
;wert1;wert2;wert3

reinschreiben, dann sollte es mein ich klappen

Und das erste Semikolon ist schon richtig, sonst würde er den Namen in die ID reinschreiben. Jedoch soll das Feld ja leer bleiben damit der Auto_Increment greift

EDIT: wenn du deine csv mit einem texteditor öffnest siehst du auch was ich meine. Bei sollte das drin stehen

Code:
";Marta;Musterfrau;+24125215215;1918.01.02;[email protected]#"
";Max;Mustermann;+24125215215;1918.01.02;[email protected]#"

Also so ähnlich, hab nun nicht alles abgeschrieben :D
Und bei PHPMyAdmin steht
Spalten eingeschlossen von: "
 
Zuletzt bearbeitet:
Ich versteh es einfach nicht, wo der Fehler liegt. Ich mach es genauso wie du es sagst und so habe ich das auch alles gelesen.
Nur macht der bei mir etwas anderes.
Ich habe mal 2 Grafiken angehangen. Vielleicht erkennst du ja darauf irgendwas, was nicht passt. Ansonst hilft nur noch Kopf --> Tischkante
 

Anhänge

  • fehlerneu1.png
    fehlerneu1.png
    334 KB · Aufrufe: 5
  • fehlerneu2.png
    fehlerneu2.png
    316 KB · Aufrufe: 5
Du hast doch wieder alles nur in einer Spalte. Du musst jeden Wert in eine Spalte packen.
Du müsstest aber dennoch die Datei einmal mit einem Editor öffnen und ganz am Anfang ein Semikolon setzen, da sonst der Name in die Spalte ID gespeichert wird.
 

Anhänge

  • csv.JPG
    csv.JPG
    60,8 KB · Aufrufe: 5
Werbung:
Selbst da sieht es bei mir im Texteditor anders aus.
Schon mal vielen Dank, dass du mir so schnell und vor allem oft antwortest!
 

Anhänge

  • fehlerneu3.png
    fehlerneu3.png
    98,7 KB · Aufrufe: 5
Also einmal ich hab schon ne Beule wegen Kopf -> Tisch. Die Telefonnummer natürlich nicht in Anführungszeichen. Da hab ich nicht nachgedacht.

Ich hab es nochmal so gemacht. In der CSV schreibst du in der ersten Zeile die Spaltenname der Datenbank. Hab dir mal zwei Screenshots anhängt. Ganz zum schluss müsstest du die Datei mit nem editor öffnen und die erste Zeile rauslöschen.
 

Anhänge

  • csv1.JPG
    csv1.JPG
    52,8 KB · Aufrufe: 8
  • csv3.JPG
    csv3.JPG
    12,5 KB · Aufrufe: 7
Jetzt hat es endlich funktioniert! War ja wirklich ein Kampf! :) Vielen Dank!

Einziges Problem (wenn man es so nennen will):
Das Datum wird nicht richtig übernommen, sondern im Format jjjj.mm.tt, eingegeben ist es aber umgekehrt. Wie kann ich das lösen?
 
Werbung:
Da Du ein DATE-Feld hast musst Du das Datum im Format JJJJ-MM-TT angeben. Wenn Du das nicht willst, müsstest Du das Format der Spalte ändern, z.B. in Text. Das könntest Du dann jedoch ggfs. nicht wirklich mit den MySQL-eigenen Datumsfunktionen weiterverarbeiten. Was der beste Weg ist hängt davon ab, was Du mit den Daten in der DB eigentlich machen willst.
 
Zurück
Oben