Jörg: Import von fehlerhafter csv-Datei / Zeilenumbrüche in Feldern entfernen

Beitrag lesen

Hi Raketenwilli,

Wenn, wie oben bei Ziffer 22633, ein Zeilenumbruch innerhalb eines eigentlichen Strings ist, welcher (der Zeilenumbruch) auch laut der Definition Deines CSV eigentlich einen neuen Datensatz einleiten soll, dann hast Du kein definiertes ergo kein maschinell auswertbares CSV, ergo genau drei Möglichkeiten:

Unterm Strich sieht es genau so aus. Und Du hast viele richtige Dinge angesprochen. Leider ist der Datenimport nur ein sehr kleiner Teil meiner Leistung am Kunden, sodass ich deshalb niemals einen Kunden verprellen wollen würde. Ich mache die Risiken transparent und schließe jede Gewähr aus. Aber deshalb einen Kunden verlieren, wäre die Sache nicht wert. das mal vorab...

Zudem habe ich mir über die Jahre hinweg bereits einen recht stabilen Import geschrieben, der sich bisher ganz gut bewährt hat. Meine Importprobleme gestern waren einer Vorabkontrolle aufgefallen, die noch vor dem eigentlichen Import ansetzt und nur schaut, ob Datenmüll vorliegt oder eine in sich stabil zu importierende Datei.

  • Bester und eigentlich einziger Weg: Erneuter, sauberer Datenexport. (Du hast keine „Daten“ sondern Datenmüll!)

oder

  • Du gehst im Editor mit Suchen und Ersetzen

Genau das war übrigens gestern das "Mittel der Wahl". Da für mich Excel neu war, wußte ich nicht genau, was zu tun war. Letztlich kann man aber in Excel die komplette Tabelle markieren und über suchen und ersetzen alle Zeilenumbrüche der Tabelle entfernen, wobei dann eben nur die Zeilenumbrüche in den Spalten entfernt werden. Soll heißen, man hat später beim Export dan nur noch die vom Export erzeugten "neuen Zeilenumbrüche" der Tabellenzeilen übrig und genau das will ich ja.

Hierzu muss man in Excel bei "suchen und ersetzen" nach einem Zeilenumbruch (ALT + 0010) suchen und in ein zeichen seiner Wahl ersetzen.

Und anschließend erst die tabelle als csv-Datei speichern.

In meinem Importprogramm werden dann die Spalten "vorimportiert" und anschließend von mir selber manuell einer "Bedeutung" zugeordnet. Anschließen werden die Spalten gemäß ihrer Bedeutung dann noch eingehend untersucht und "bereinigt". Somit wird natürlich unter anderem auch die Betragsspalte ihrer Bedeutung entsprechend bereinigt.

Danke für Deine Codezeilen. leider nützen sie, wie Du selber erkannt hast, auch nur etwas für das Format, das ich hier als beispiel genommen hatte. ich bekomme aber Datenmüll in verschiedenster Form. Und mein Kunde kann nicts dafür, da er sie selber genau so erhält und keinen Einfluss darauf hat.

Insofern kann der Import auch nicht voll maschinell erfolgen, sondern nur vor dem Hintergrund manueller Mithilfe und eines sich ständig um Datenmüll rettende Maßnahmen erweiternden Code. Und natürlich auch sukzessive hinzukommende Erfvahrungen im Export selber, wozu meine gesterige Erfahrung mit Excel gehört. Ehrlich gesagt ist OO oder LO da deutlich besser gewesen, aber im Einlesen wurde es im Laufe der Zeit immer schwieriger, weshalb ich mir gestern (leider) ein MS-Office kaufen musste.

Btw. Im eigentlichen Datenimport hatte ich im Gegensatz zum "Vorimport" immer schon auf fgetcsv gesetzt. Der Vorimport ist u.a. dafür zuständig, zu prüfen, ob jede zeile dieselbe Anzahl Delimiter enthält. Das habe ich jetzt auch auf fgetcsv umgestellt.

Jörg