Welche Entwicklerumgebung - Script um CSV Dateien zu "ordnen"

Firehold

Ensign
Registriert
Feb. 2016
Beiträge
170
Hallo,

ich bekomme beruflich oft csv dateien von Geschäftspartnern welche ich für meine systeme händisch ändern muss.
Meist muss ich die spalten umsortieren, also die reihnfolge der Spalten.

Um mir diese Arbeit zu ersparen würde ich gerne mit einem kleinen Script, Programm, o.ä. arbeiten, welches mir, einmal richtig eingestellt, die arbeit übernimmt.

Nun stellt sich mir die Frage, mit welcher Entwicklerumgebung ich das am einfachsten umsetzten kann.
Ich selbst komme eher aus der Webprogrammierung wo sich mit CSVs das Problem der Kodierung/des Charsets ergibt, da Programmiersprachen wie PHP die Kodierung von CSVs nicht korrekt erkennen können.

Mit Excel-Makros möchte ich auch eher ungerne arbeiten, da ich diese immer wieder in die Datei integrieren muss.

Also wie würdet ihr mir empfehlen vorzugehen?

Vielen Dank im Voraus.
 
Vielen Dank für die schnelle Antwort.

Lassen sich Python scripts benutzerfreundlich ausführen? Also ohne auf dem rechner oder webserver vorherige server oder librarys zu installieren?

Beispiel hier: (vorher oben, nachher unten)
bsp.png
 
Nein, um Python Skripte ausführen zu können, musst du erst Python installieren. Wenn du ein Programm willst, das ganz unabhängig ohne andere Bibliotheken oder Laufzeitumgebungen auskommt, musst du wohl eins in C/C++/Rust schreiben und das ist deutlich aufwändiger als in Python.

Darüber hinaus erscheinen mir die Tabellen seltsam: Unten kommt product_qty nicht vor, oben schon. Unten kommt stock_amount vor, oben nicht.
 
Was du da gebostet hast ist ein Screenshot von Excel, welches die .csv interpretiert hat. .csv sind jedoch eigentlich Textdatein.

Die Frage meinerseits wäre jedoch eher, wieso du die .csv bzw. deren Spalten umsortieren willst / musst.
 
Natürlich ist es ein Screenshot von Excel, um zu verdeutlichen was ich ereichen möchte.

ich bekomme wie gesagt mehrere Dateien von Geschäftspartnern welche eine eigene export-struktur haben.
Um diese Daten in mein System importieren zu können benötige ich jedoch eine vorgegebene Struktur.

Ich muss später auch Überschriften umbenennen, jedoch ist dies ein Vorgang, welcher sich wohl einfach und mit jeder Entwicklungsumgebung umsetzten lässt.
 
Firehold schrieb:
ich bekomme beruflich oft csv dateien von Geschäftspartnern welche ich für meine systeme händisch ändern muss.
Meist muss ich die spalten umsortieren, also die reihnfolge der Spalten.
Prinzipiell eignet sich dazu jede Programmiersprache. Vorzugsweise eine, mit der Du schon vertraut bist.

Um mir diese Arbeit zu ersparen würde ich gerne mit einem kleinen Script, Programm, o.ä. arbeiten, welches mir, einmal richtig eingestellt, die arbeit übernimmt.

Firehold schrieb:
Ich selbst komme eher aus der Webprogrammierung wo sich mit CSVs das Problem der Kodierung/des Charsets ergibt, da Programmiersprachen wie PHP die Kodierung von CSVs nicht korrekt erkennen können.
Ich bin jetzt weder Fan noch intimer Kenner von PHP, aber ich würde fast wetten, dass man das auch mit PHP hinbekommt.

Das Grundproblem allerdings, dass es auch nicht immer einfach ist den korrekten Zeichensatz zu erkennen. Einen Zeichensatz auf Daten anwenden heißt ja im Prinzip die Daten auf eine bestimmte Weise zu interpretieren.

In der Praxis ist es aber häufig etwas einfacher. Meist wird eh nur mit UTF-8, ISO 8859 oder vielleicht noch Windows-1252 herumhantiert.

Theoretisch könnte man dann relativ einfach ne Erkennung machen, in denen man alle drei nacheinander auf die Daten anwendet, und dann guckt, ob irgendwelche "kaputten Zeichen" dabei herumkommen. Und wo das halt nicht so ist, der wird dann als der gültige Zeichensatz genommen.

CSV-Parser und -Writer kriegt man ja auch für jede Programmiersprache. Der Rest ist trivial.

Firehold schrieb:
Lassen sich Python scripts benutzerfreundlich ausführen? Also ohne auf dem rechner oder webserver vorherige server oder librarys zu installieren?
Ich weiß es jetzt nicht wirklich, aber prinzipiell kann man natürlich Stand-alone-Executables erstellen. Also salopp: Ne EXE-Datei. Allerdings bist Du dann in der Problematik die auf alle benötigten Rechner zu verteilen und dann ggf. auch zu updaten, wenn sich etwas ändert.

So das man fast schon wieder überlegen könnte das als Webservice ins Intranet zu stellen, wo man die Datei via Webbrowser hochlädt und als Ergebnis die modifizierte Datei zurück bekommt.

Womit Du dann auch wieder in der vertrauten PHP-Welt bist.

Denn ganz ehrlich: Nur für diese Aufgabe Python zu verwenden das dann ggf. noch nicht einmal eine optimale Lösung garantiert, ich weiß nicht, ob sich da der Aufwand lohnt.

Muss Du aber selbst wissen.
 
Was du erreichen möchtest ist schön und gut, man kann aber nichts schreiben was das zugrundelegende Dokument parst, wenn du dieses nicht zur Verfügung stellst.

Wenn du den Import machst, mit welcher Software und wie tust du dies? Die meiste Software lässt es zu sehr flexible Importfilter anzulegen, so dass man eben nicht noch vorher nochmal einen Schritt einfügen muss.

Entwicklungsumgebungen sind NICHT was du suchst. Frag mal Wikipedia zum Thema. Die Kommunikation wird einfacher, wenn du dich an etablierte Sprachregelungen halten kannst.
 
Also wenn die CSV dateien spaltenüberschriften haben dann nimm in deinem Import halt nicht die 1. Spalte... sondern die Spalte mit passender Überschrift egal an welcher stelle die steht.
 
Was spricht denn dagegen die Spalten direkt mit Excel umzusortieren?
Eine programmierte Lösung ist ja nur so gut, wie sich deine Kontakte an ihre Spaltenreihenfolge halten.. dh du wirst eh jedesmal von Hand prüfen, wie die neuen Daten sind und dann kannst du sie auch direkt umsortieren?
Oder es gibt eindeutige Bezeichner für die Spalten anhand derer du die Spalten sortieren kannst? Aber da müssten sich dann alle dran halten.

Ich würds auch mit Python machen aber wenn du eh Excel hast geht da sicher auch VBA :D
https://stackoverflow.com/questions/23702934/reordering-multiple-columns-in-excel-vba
https://code.adonline.id.au/rearrange-columns-excel-vba/
 
Ich hatte mal ein kleines CMD-Line Tool geschrieben, das die Spalten in einer CSV-Datei nach einem vorgegebenen Schema umsortiert.

Das Tool hat einfach die Spalten nach Index (erste Spalte = Index 0) umsortiert, also um von (Vorname, Nachname, Alter) nach (Vorname, Alter, Nachname):

Syntax:
-in=input.csv -out=output.csv -layout=0,2,1

Ich schau mal nach ob ich's noch finde (war in Go geschrieben, kann als standalone exe eingesetzt werden)
Spalten umbenennen kann das Tool aber nicht, das müsste man entweder einbauen oder per Hand im CSV ändern (wären ja nur 1 Zeile pro CSV)
 
Zurück
Oben