Suche Weg um csv-Daten von FTP Server zu downloaden und in einer Datenbank abzuspeichern

X438PYTC

Neuer Benutzer
Beiträge
3
Hallo,

wir betreiben verschiedene Anlagen die Betriebsparameter wie (Temperatur, Konzentrationen, Laufzeit etc.) aufzeichnen. Diese Daten werden in einer CSV-Datei abgelegt, welche wir dann über einen Fernzugriff vom FTP-Server der Anlage downloaden können.

Wir haben 2-3 verschiedene Anlagentypen, die auch unterschiedliche Betriebsdaten aufzeichnen bzw. diese auch in unterschiedlichen Formaten in der CSV ablegen.

Aktuell werden die Daten sehr umständlich über x-Programme und Skripte umgewandelt und in eine Access Datenbank importiert. Das funktioniert aber sehr unzuverlässig und keiner versteht so wirklich was da genau abläuft, weil es vor 10-15 Jahren mal von jemanden rudimentär zusammengeschustert wurde, der nicht mehr da ist.

Gibt es eine einfache Lösung (z.B. fertig dafür ausgelegte Programme) die diesen Ablauf automatisch machen? Ideal wäre es, wenn man bei jeder Anlage auch definieren kann, welcher Wert in der CSV was bedeutet. Die Datenbank muss nicht lokal sein.

Ich und meine Kollegen kennen uns in dem Thema nicht aus, daher wäre eine Benutzer- und Anfängerfreundliche Variante sehr wichtig, bei der man nichts groß programmieren muss.


Danke für euren Rat!
 
Werbung:
Welches Format soll denn die Datenbank zukünftig haben, muss es wieder Access sein? (Das ist sehr alt und nicht zu empfehlen).

Ich kenne leider keine wirklich simple Software für so etwas, das könnte man scripten allerdings geht das über reines SQL deutlich hinaus. Je nach eingesetzter Datenbank und Lizenz gibt es auch Importassistenten die man passend konfigurieren kann.
 
Welches Format soll denn die Datenbank zukünftig haben, muss es wieder Access sein? (Das ist sehr alt und nicht zu empfehlen).

Ich kenne leider keine wirklich simple Software für so etwas, das könnte man scripten allerdings geht das über reines SQL deutlich hinaus. Je nach eingesetzter Datenbank und Lizenz gibt es auch Importassistenten die man passend konfigurieren kann.

Muss kein Access sein.
Wir brauchen nur eine einfache Übersicht über die Daten (Dashboard mit allen Anlagen), dass wir alle paar Tage drauf schauen können, ob noch alles im Normalbetrieb läuft.
Außerdem bräuchten wir einen Datenexport, wo man die Daten grafisch in Diagrammen darstellen kann.
Das ging jetzt soweit halt mehr oder weniger über Access.
 
Ist es wirklich ftp?
Oder vielleicht sftp?
Oder tftp oder .. ?

Mir ist nicht ganz klar, warum es mit vielen tools gemacht wird.
Ich würde gefühlt 2 brauchen.
ftp zum Übertragen
und
psql zum Einspielen in die DB.
Kostet beides nichts. Also, ftp an sich kostet nichts, weil irgendjemand schon für das Betriebssystem bezahlt hat. So oder so, es ist da:

Windows hat eine Kommandozeilen-FTP im Bauch. Einfach >FTP aufrufen.
Dann sind die Dateien lokal.

Der Import ist dann DB Abhängig und mit ein paar Hilfstabellen kann man sicher auch die unterschiedlichen Anlagen-Daten mit der Bedeutung verschiedener Felder versehen. Das geht auch beliebig komplex, nennt sich allgemein ETL.

Und das alles gibt es alles auch grafisch und bunt. Aber das liefert meist nicht so gute Automatisierungsmöglichkeiten.
Die Grafiktools kann man u.U. zur Hilfe nehmen, um sich erstmal zurecht zufinden (auf den entfernten FTP Servern).

Offen ist in der Anforderung auch, nach welchem Schema die Dateien abgelegt und benannt werden, ob gelöscht werden muss, ob eine Übertragungsprüfung erfolgen muss usw. . .also erst übertragen, dann Erfolg prüfen, dann Quelldaten löschen.

Am Rande:
Sind es Eure Anlagen? Eure Lösung? Und eine Leistung der Kunden, es per FTP bereitzustellen?
FTP ist unverschlüsselte Datenübertragung und wirklich nicht mehr State of the Art.
 
Grundsätzlich käme auch MSSQL in Frage, allerdings ließen sich Aufgaben wie FTP Upload wohl am besten über den Agent abbilden (mit Wizzard und so) aber der ist nicht in der kostenlosten Express Variante vorhanden. Wir reden dann ggf. von Lizenzkosten oder man baut es selber, was aber schon ein paar Nerven kosten wird.

In jedem Fall muss man aber klar unterscheiden: Ein vollwertiges DBMS wie MySQL, MariaDB, MSSQL, PostgreSQL ist nur ein Backend und bietet keine Eingabemaske oder Berichtserstellung oder sowas. Access ist im Prinzip nur eine Datendatei die zufällig mit Tabellen und Datentypen arbeitet und ein Frontend-Baukasten mit dem man ein bisschen was machen kann. Wechselst du also zu einem richtigen DBMS fehlt dir erstmal ein Frontend für deine Anwender.
 
@X438PYTC ist das Problem noch relevant? Die gesuchte Software läuft unter ETL (Extract Transform Load). Manchmal wird auf Hochschullevel diskutiert, ob nicht ELT besser wäre (als den Transformschritt erst in der Datenbank). Wie @ukulele schon sagte, Access ist alt und sollte dringend ersetzt werden. Bei Bedarf können wir auch gerne bilateral zu dem Thema unterhalten.
 
Sorry für meine späte Rückmeldung, ich war in der Zwischenzeit im Sommerurlaub.
Danke für eure Antworten und ja das Problem ist noch relevant.

@dabadepdu
Ja es sind alles unsere Anlagen. Da es jedoch teilweise auch 20 Jahre alte Anlagen sind und in der Zwischenzeit viel herumexperimentiert wurde oder aufgrund Liefer- und Preisbedingungen mal auf andere Systeme gewechselt wurde haben wir einen MischMasch aus Steuerungen.
Einzelne Fälle läufen noch über ftp, der Rest über sftp.

Auch wie die Daten geschrieben werden ist unterschiedlich. Manchmal wird für jeden Tag eine neue csv angelegt, manche Anlagen haben einen rotierenden Speicher und schreiben alles in eine csv, welche dann irgendwann wieder von vorne an überschrieben wird, wenn der Speicher voll ist.

Ein wichtiger Punkt ist noch, dass jede Anlage über VPN erreichbar ist aber wir unterschiedliche Netzwerkbereiche und auch VPN-Anbieter im Einsatz haben. Um also einen Download per FTP/SFTP machen zu können muss erst mal eine VPN Verbindung hergestellt werden.
Das könnte auch eventuell ein Grund gewesen sein, dass man den Daten Download auf zwei virtuelle Systeme getrennt hat, weil man auf jedem Rechner dann einfach per OpenVPN dauerhaft die VPN-Verbindung am laufen hat und dann dort alle Anlagen abruft die in diesem Netzwerk verbunden sind.
Wäre jetzt noch weniger ein Problem zwei virtuelle Maschinen hierfür einzusetzen. Mir ist nur wichtig, dass wir den ganzen Vorgang einfacher und zuverlässiger gestalten mit Prüfung des Datendownloads und einem moderneren und einfacheren Frontend, dass unsere Kollegen hiermit gut zurecht kommen.

Ein einfacherer Aufbau des Ganzen soll dann auch helfen, dass man es besser nachvollziehen kann und ggf. selbst Änderungen machen kann. Momentan blickt hier nämlich tatsächlich keiner durch, weil die aktuelle Struktur vor langer Zeit von einem ehemaligen Kollegen aufgebaut wurde, der schon seit Ewigkeiten nicht mehr in der Firma ist.

So wie es jetzt aber rausgehört habe, gibt es keine fertigen Programme für den ganzen ETL Vorgang und es sind zusätzliche Programmierarbeiten notwendig?
Welche Möglichkeiten gibt es denn aktuell für das Frontend, um alle transformierten Daten sich anzeigen zu lassen?
 
Wir können uns gerne bilateral über die Möglichkeiten unterhalten, für eine out-of-box Lösungsvorschlag ist die Informationslage zu dünn. Man sollte sich mal Knime und Talend als Open Source Lösung ansehen.

Für das Frontend würde ich einen sofortigen Wechsel von Access (schon skizziert) und ein einfaches Webfrontend (Programmiersprache egal, die ETL Tools haben auch Anzeige Möglichkeiten) empfehlen.

Edit: Ergänzung des FE Blocks.
 
Ich würde erstmal überlegen oder mitteilen, was im Idealfall zu tun ist. Dabei darf man durchaus darüber nachdenken, was in den nächsten 20 Jahren die Richtung sein soll. Ich würde mal vermuten, es geht um Konsolidierung, Vereinfachung hast Du genannt, ausreichend Flexibilität.
Anhand der Access Erwähnung wäre mal eine Frage, soll es Windows sein/ bleiben, Linux, beides, alles ... ?
Dann kann man überlegen, ob man schon auf den Maschinen vor Ort strukturelle Änderungen vornehmen will / muss.
Wenn nicht, wäre es das einfachste, einfach Dateien zu übertragen.
Das wiederum wäre am einfachsten, wenn es an zentrale Punkte (mindestens einen) in die Cloud erfolgt.
Erst dort oder noch später werden Strukturen betrachtet, transformiert, importiert, weiter transformiert, bewertet, reagiert usw.

VPN braucht man dafür (in diese Richtung) nur bedingt. Ein HTTPS Webserver kann die Dateien annehmen. Ein Dateiupload, gescheduled oder nach Bedarf kann man idR mit Bordmitteln des OS durchführen. Ein beliebiger Client (ob Produktionsmaschine oder Playstation) findet von sich aus am einfachsten ins Internet (Cloud). Andersum ist es viel aufwändiger und pflegeintensiver.

Fertige Lösungen haben u.U. den Charme, dass sie eben fertig sind. Aber tendenziell auch unübersichtlich, Overkill und an irgendeiner Stelle dann doch unzulänglich. Spätestens da kann es auch teuer werden.

Zuletzt und ganz grundsätzlich kann man die Überlegung anstellen, dass eine "einfache GUI" für die Anwender natürlich wünschenswert ist, aber nicht der Ausganspunkt, um sowas neu und ordentlich aufzusetzen. Im Prinzip geht es doch immer darum, Prozesse automatisiert laufen zu lassen, konfigurierbar zu machen, immer eingreifen zu können und die Kontrolle zu behalten. Das ist alles Kommandozeile, Konfigdateien und OS Scheduler. Das soll laufen, auch wenn der aktuelle Browser einen Bug hat und Windows 11 ein neues "Sicherheitsfeature" liefert, das leider den Dateizugriff bei bestimmten Endungen unterbindet.
Eine grafische Oberfläche hilft erst, wenn das Design darunter Hand und Fuß hat. Sie dient dann nur zur Sichtung von Anlagendaten und Änderung von Konfigurationsdaten oder Starten, Pausieren und Stoppen von Prozessen.

Also als Startidee:
Ein einfaches Programm, das in der Lage ist, auf jeder Maschine alle notwendigen Daten zu sammeln (Dateien) und diese sauber und zentral für einen Upload bereitstellt. Es muss beliebige Verzeichnisse unter Kontrolle haben, Schreibprozesse der Maschinen vorang lassen und "fertige" Dateien ordentlich einsammeln. Welche Verzeichnisse, welches Timing, welche Zyklen, Iterationen wird in Konfigdateien definiert.
Dann gibt es einen zyklischen Upload, der Zeit - oder Volumen gesteuert ist. Optional mit Kompressionsverfahren. Das und die Ziele der Uploads (auch Ersatzadressen), sowie Pufferung bei Leitungsausfall muss gewährleistet sein.
 
Werbung:
Ich kenne Eure Umgebungen und Infrastruktur zwar nicht. Aber grundsätzlich lässt sich das beispielsweise mit Python tadellos automatisieren!
Nimmt man noch das Framework Django dazu, hat man sogar ein sehr starkes Frontend-Framework mit an Board.

Mit Python kann man die CSV holen und einlesen lassen. Anschließend schreibst du die Daten in eine MariaDB / MySQL / PostgreSQL / SQL-Server und kannst sie schön grafisch auf dem Browser darstellen... Sollte überhaupt kein Problem sein!
 
Zurück
Oben