wasimonsu
Goto Top

MySQL-Fehler (1261). SQL will alle 5 Spalten befüllt sehen - wie kann ich die befüllen oder ignorieren? (.csv)

Importierung einer .csv Datei in eine MySQL-Tabelle

Guten Morgen!

Ich habe ein Problem, und zwar muss ich meine .csv Datei, die 5 Spalten besitzt, in MySQL importieren.
Dazu habe ich den LOAD DATA INFILE Befehl benutzt:

LOAD DATA INFILE 'Dateipfad'  
INTO TABLE dbname.tabellenname
FIELDS TERMINATED BY ';'  

Wenn ich diesen Befehl ausführe, meldet er mir folgenden Error:

ROW 97 doesn't contain data for all columns - Fehlernr. 1261

Ich habe daraufhin meine .csv Datei nochmal angeschaut und gesehen, dass in dieser und den nächsten 10 hinter der 4. Spalte ein Semikolon (;) fehlt. Die Spalte 5 ist nur selten befüllt -> allerdings gibt es auch bei einer leeren Zeile manchmal ein Semikolon und öfters keines.
Deshalb denkt MySQL nun, dass es nach der 4. Spalte aufhört und gibt mir einen Error.

Meine Frage deshalb:
Wie kann ich MySQL sagen, dass er so etwas ignorieren und sofort die nächste Zeile gehen soll?
Oder kann ich so etwas auch schon Excel sagen bzw. mit Batch erledigen (dann wäre es aber das falsche Forum)?

Suche schon eine Zeit lang bei Google herum, finde jedoch leider keinen Rat.

Dann danke ich erst mal für's lesen und hoffe dass ihr mir helfen könnt face-wink

Liebe Grüße,

Simon

Content-Key: 93842

Url: https://administrator.de/contentid/93842

Printed on: April 25, 2024 at 00:04 o'clock

Member: Biber
Biber Aug 07, 2008 at 09:18:52 (UTC)
Goto Top
Moin WaSimonSu,

willkommen im Forum.
Oder kann ich so etwas auch schon Excel sagen bzw. mit Batch erledigen
Jepp, bei Excel als DatenerzeugerIn würde ich ansetzen.
Per Batch nacharbeiten wäre ein Prozessschritt mehr und von daher Plan B.
Wir sollten es bei "Dateiexport" und "Dateiimport" mit je einer beteiligten Appz belassen.

(dann wäre es aber das falsche Forum)?
Ach was, das meiste hier ist sowieso interdisziplinär und undiszipliniert.

Aber ich nehme dann schon Kontakt mit den Moderatoren von "Datenbanken", "Entwicklung" und "Batch & Shell" auf und einige mich mit denen. Die sind alle ganz unkompliziert.

  • Wie erzeugst Du denn heute die .csv-Datei (Makro, manuell,..)?
  • ist es fachlich richtig und gewünscht, das derartige Sätze "allerdings gibt es auch bei einer leeren Zeile manchmal ein Semikolon und öfters keines" überhaupt mit rüberwandern?
  • gibt es einen Validitätscheck auf Excelseite (nur "gültige"/vollständige Sätze im Sinne des DB-Designs werden exportiert? Denn auf mySQL-Seite nimmst Du ja wohl alles...

Grüße
Biber
Member: WaSimonSu
WaSimonSu Aug 07, 2008 at 09:40:37 (UTC)
Goto Top
Danke für die rasche Antwort&freundliche Begrüßung ;)

Wie erzeugst Du denn heute die .csv-Datei (Makro, manuell,..)?
Die .csv Datei habe ich ganz Manuell aus einer .xls Datei raus erstellt (per Speichern unter...).

ist es fachlich richtig und gewünscht, das derartige Sätze "allerdings gibt es auch bei einer leeren Zeile manchmal ein Semikolon und öfters keines" überhaupt mit rüberwandern?
Ups - da waren wohl meine Finger etwas zu schnell und ich habe versucht 2 Sätze in einen zu packen... ;)
Was ich meinte war, dass manchmal in dieser Spalte entweder ein REV drinne steht, oder einfach nichts. Wenn ich mir dann die .csv Datei per Texteditor anschaue, dann sehe ich, dass oft unerklärlicherweise bei einer Zelle OHNE Inhalt ein Semikolon (= Zeichen für die nächste Spalte) davor fehlt und manchmal ist es vorhanden obwhohl in der besagten Spalte ebenso nichts drinne steht... *verwirrt*

gibt es einen Validitätscheck auf Excelseite (nur "gültige"/vollständige Sätze im Sinne des DB-Designs werden exportiert? Denn auf mySQL-Seite nimmst Du ja wohl alles...
Nicht, das ich wüsste! Habe alle Arten von .csv ausprobiert. Auch kommt derselbe Fehler, wenn ich es nicht als CSV (Trennzeichen-getrennt) *.csv abspeichere (so wie jetzt), sondern als z.B. Text (Tabstopp-getrennt) *.txt.
Member: WaSimonSu
WaSimonSu Aug 11, 2008 at 05:29:44 (UTC)
Goto Top
Hallo nochmal - hast du mein Anliegen schon weitergeleitet? face-smile
Member: Biber
Biber Aug 11, 2008 at 05:43:22 (UTC)
Goto Top
Moin Wasimodo,
...hast du mein Anliegen schon weitergeleitet?
Upps.... nein, noch nicht... *schäm*

Es würde auch hier gefunden werden, aber ich verschieb es mal
kurz von "Datenbanken" nach "Excelkrams".

Grüße
Biber
Member: WaSimonSu
WaSimonSu Aug 11, 2008 at 07:25:16 (UTC)
Goto Top
Juhu!
Ich hab inzwischen das Problem mit einem VBA-Makro bei Excel lösen können face-smile

Für die Nachwelt bzw. SuFu-Benutzer:

Ich habe ein Makro hinzugefügt mit folgendem Code:

Sub Write_CSV()

F = FreeFile(0)
fname = InputBox("Enter the filename with Path:", _  
"Please Enter Output File Name:")  
MsgBox "File Selected is: " & fname  
If fname <> False Then
Open fname For Output As #F
Set Rng = ActiveCell.CurrentRegion
Debug.Print Rng.Address
FCol = Rng.Columns(1).Column
LCol = Rng.Columns(Rng.Columns.Count).Column
Frow = Rng.Rows(1).Row
Lrow = Rng.Rows(Rng.Rows.Count).Row
For i = Frow To Lrow
outputLine = ""  
For j = FCol To LCol
If j <> LCol Then
'Semikolon als Texttrennzeichen, kann geändert werden  
outputLine = outputLine & Cells(i, j) & ";"  
Else
outputLine = outputLine & Cells(i, j)
End If
Next j
Print #F, outputLine
Next i
Close #F
End If

End Sub

Daraufhin habe ich den Zielpfad angegeben und die .xls Datei gespeichert.

Dann die .csv Datei mithilfe eines Texteditors geöffnet, alle doppelten Semikolons am Ende zu einem gemacht (Suchen & Ersetzen funktion im Notepad) und das letzte Semikolon in der ersten Zeile gelöscht und schon ging es ;))