MS SQL Datenbank Tool um verschieden strukturierte Quelldaten sequenziell zu importieren gesucht!
Ich suche ein Programm, das mir ermöglich, verschieden exportierte Textdateien von Produktionsmaschinen aus zu werten und in ein Tabellenfähiges Format zu wandeln. Derzeit über Batch, für jede Maschine neu.
Ich suche ein Programm, das mir ermöglich, verschieden exportierte Textdateien von Produktionsmaschinen verschiedener Hersteller aus zu werten und in ein Tabellenfähiges Format zu wandeln, um dieses vordefinierte Format dann in einen SQL Server ein zu spielen.
Derzeit entwickle ich für jede Maschine einen Batch, für jede Maschine neu, und spiele per bcp die Daten ein.
Da es sein kann, das die Textdateien von den Maschinen alle Minute ausgespuckt werden, und die Verzeichnisse überwacht werden (sollen), sind daher dauernd Scripte am laufen, die auch gerne mal gleichzeitig starten, oder stehen bleiben. Selbst wenn wir das script nur alle 24 Stunden laufen lassen
Ich hatte es mir so vorgestellt, das es ein Programm gibt, der sequenziell die Verzeichnisse abarbeitet, und dann die Dateien in das System hinterlegt.
Natürlich bekomme ich das auch mit Hilfe eines Batch-Containers hin, suche aber eine elegante, und fehlertolerantere Lösung.
Gerne auch eine kostenpflichtige Lösung, eine dementsprechende Schnittstelle jeder Maschine kostet zwischen 2500 und 10000€ Euro, da würde uns eine einmalige Ausgabe einer Software weniger kosten.
Nochmals Anforderungen:
- Willkürlich formatierte Textdateien in ein Datenbank kompatibles Format bringen
- Import in die Datenbank
- Bestandsprüfung bei Import, um doppelte Datensätze zu vermeiden
Ich weiss ich wünsche mir hier eine eierlegende Wollmilchsau, aber vieleicht gibt es ja sowas ;)
Danke für die Hilfe!
PS: Anbei ein Auszug einiger Daten, die veranschaulichen sollen, was importiert werden soll:
Maschine1.txt
Date :2013.1.4
Save Recording : 8.5.38 Clock
Automatik : T#4m18s
Aktiv : T#3m27s
Error : T#18s
Magazine : T#51s
Out trans. : T#0ms
Schnitte: 16
Teil abgeschoben: 14
Number of Parts: 13
Maschine2.txt
Datum: 20130312
Maschine: SE-2KPH-CNC, 5736
Herstellung: XXXX Maschinenbau GmbH
Kunde: XXXXXXXX, XXXXXXXXX
Zeit;ProOptID;Breite;Höhe;Stückzahl;Status
13:20:26;0;0;0;0;Maschine On
13:35:37;0;0;0;0;Maschine On
13:37:07;0;0;0;0;Automatik start
13:43:37;0;6500;4750;344812;
etc. Nicht auszuschließen das andere Formate dazu kommen.
Ich suche ein Programm, das mir ermöglich, verschieden exportierte Textdateien von Produktionsmaschinen verschiedener Hersteller aus zu werten und in ein Tabellenfähiges Format zu wandeln, um dieses vordefinierte Format dann in einen SQL Server ein zu spielen.
Derzeit entwickle ich für jede Maschine einen Batch, für jede Maschine neu, und spiele per bcp die Daten ein.
Da es sein kann, das die Textdateien von den Maschinen alle Minute ausgespuckt werden, und die Verzeichnisse überwacht werden (sollen), sind daher dauernd Scripte am laufen, die auch gerne mal gleichzeitig starten, oder stehen bleiben. Selbst wenn wir das script nur alle 24 Stunden laufen lassen
Ich hatte es mir so vorgestellt, das es ein Programm gibt, der sequenziell die Verzeichnisse abarbeitet, und dann die Dateien in das System hinterlegt.
Natürlich bekomme ich das auch mit Hilfe eines Batch-Containers hin, suche aber eine elegante, und fehlertolerantere Lösung.
Gerne auch eine kostenpflichtige Lösung, eine dementsprechende Schnittstelle jeder Maschine kostet zwischen 2500 und 10000€ Euro, da würde uns eine einmalige Ausgabe einer Software weniger kosten.
Nochmals Anforderungen:
- Willkürlich formatierte Textdateien in ein Datenbank kompatibles Format bringen
- Import in die Datenbank
- Bestandsprüfung bei Import, um doppelte Datensätze zu vermeiden
Ich weiss ich wünsche mir hier eine eierlegende Wollmilchsau, aber vieleicht gibt es ja sowas ;)
Danke für die Hilfe!
PS: Anbei ein Auszug einiger Daten, die veranschaulichen sollen, was importiert werden soll:
Maschine1.txt
Date :2013.1.4
Save Recording : 8.5.38 Clock
Automatik : T#4m18s
Aktiv : T#3m27s
Error : T#18s
Magazine : T#51s
Out trans. : T#0ms
Schnitte: 16
Teil abgeschoben: 14
Number of Parts: 13
Maschine2.txt
Datum: 20130312
Maschine: SE-2KPH-CNC, 5736
Herstellung: XXXX Maschinenbau GmbH
Kunde: XXXXXXXX, XXXXXXXXX
Zeit;ProOptID;Breite;Höhe;Stückzahl;Status
13:20:26;0;0;0;0;Maschine On
13:35:37;0;0;0;0;Maschine On
13:37:07;0;0;0;0;Automatik start
13:43:37;0;6500;4750;344812;
etc. Nicht auszuschließen das andere Formate dazu kommen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 206071
Url: https://administrator.de/contentid/206071
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
7 Kommentare
Neuester Kommentar
Moin Lyriker,
nur zur Sicherheit: du bist dir bewusst, dass du (mindestens) zwei ganz verschiedene Probleme hast.
a) da brauchst ein Konvertierungswerkzeug, um "lose strukturierte" oder Semi-strukturierte Maschinenlogs in strukturierte (=für relational DB-Welt geeignete, in Zeilen und Spalten abbildbare) Entitäten zu transformieren
b) du brauchst ein Tool, das dir die workflowgesteuerte und oder zeitgesteuerte Datenübernahme inclusive des ganzen Protokollierungskrams, Fehlerhandling und restartfähigen Jobs abnimmt und diese Importe auch noch kollisionsfrei bewältigen kann.
Bei Punkt a) wirst du auch mit einem ETL-Tool nur sehr begrenzt weit mit grafischen Zusammenklick-Mappings kommen. Die eigentliche Übersetzung des Quellzeilengestrukeles mit 137 verschiedenen Satz- und Wiederholblockarten per Quelldatei musst du auch über die mitgelieferte Skriptprache zusammenklöppeln - und das ist derselbe "Programmieraufwand" wie mit irgendwas in Richtung VBS/Batch/sonstige Leichtgewichte. Es sollte dir nur bewusst sein, dass du mit einem gekauften ETL-Tool auch nur ein "Werkzeug" hast, noch keine einsetzbare Lösung.
Bei Punkt b) solltest du vorher geklärt haben, ob du denn in deiner Rechnung berücksichtigt hast, das dieses Tool zur Datenbewirtschaftung evtl ein separtet Rechner sein sollte (soll ja rund um die Uhr diese Aufgabe übernehmen). Ein eigener Rechner dafür ist ja auch sinnvoll, keine Frage, aber ob sich der Einsatz eines der handelsüblichen ETL-Tools für deinen Krams lohnt -> ist wirklich noch zu klären.
Denn letzten Endes brauchst du wirklich kein Client/Server-Tool mit differenzierter User- und Rechteverwaltung und eigenem Repository zum Handling von 200000 Importen aus 138 verschiedenen Quellformaten in 78000 verschiedene Datenbankserver/Schemata, sondern in der Tendenz doch wohl eher 20 individuelle Quellformate, die als Ziel genau EINE MS-SQL-Datenbank haben (und da vielleicht 10 Tabellen in einem Schema).
In diesem Fall würde ich dir eher von einem Ankauf eines ETL-Tools (von wem auch immer) abraten und das Geld lieber anlegen für eine Individual-Applikationserstellung durch eine Software-Klitsche aus dem Nachbardorf, die euch ein wartbares und erweiterbares Grundgerüst hinterlääst.
Dürfte ebenfalls in der Größenordnung 6000 Ocken liegen.
Aber es deckt dann erstmal > 85% eurer real existierenden Anforderungen ab und nicht nur die durchschnittlichen 25% der Anforderungen, die ein xy-ETL-Tool im ersten Anlauf ohne Anpassungen schafft.
Grüße
Biber
nur zur Sicherheit: du bist dir bewusst, dass du (mindestens) zwei ganz verschiedene Probleme hast.
a) da brauchst ein Konvertierungswerkzeug, um "lose strukturierte" oder Semi-strukturierte Maschinenlogs in strukturierte (=für relational DB-Welt geeignete, in Zeilen und Spalten abbildbare) Entitäten zu transformieren
b) du brauchst ein Tool, das dir die workflowgesteuerte und oder zeitgesteuerte Datenübernahme inclusive des ganzen Protokollierungskrams, Fehlerhandling und restartfähigen Jobs abnimmt und diese Importe auch noch kollisionsfrei bewältigen kann.
Bei Punkt a) wirst du auch mit einem ETL-Tool nur sehr begrenzt weit mit grafischen Zusammenklick-Mappings kommen. Die eigentliche Übersetzung des Quellzeilengestrukeles mit 137 verschiedenen Satz- und Wiederholblockarten per Quelldatei musst du auch über die mitgelieferte Skriptprache zusammenklöppeln - und das ist derselbe "Programmieraufwand" wie mit irgendwas in Richtung VBS/Batch/sonstige Leichtgewichte. Es sollte dir nur bewusst sein, dass du mit einem gekauften ETL-Tool auch nur ein "Werkzeug" hast, noch keine einsetzbare Lösung.
Bei Punkt b) solltest du vorher geklärt haben, ob du denn in deiner Rechnung berücksichtigt hast, das dieses Tool zur Datenbewirtschaftung evtl ein separtet Rechner sein sollte (soll ja rund um die Uhr diese Aufgabe übernehmen). Ein eigener Rechner dafür ist ja auch sinnvoll, keine Frage, aber ob sich der Einsatz eines der handelsüblichen ETL-Tools für deinen Krams lohnt -> ist wirklich noch zu klären.
Denn letzten Endes brauchst du wirklich kein Client/Server-Tool mit differenzierter User- und Rechteverwaltung und eigenem Repository zum Handling von 200000 Importen aus 138 verschiedenen Quellformaten in 78000 verschiedene Datenbankserver/Schemata, sondern in der Tendenz doch wohl eher 20 individuelle Quellformate, die als Ziel genau EINE MS-SQL-Datenbank haben (und da vielleicht 10 Tabellen in einem Schema).
In diesem Fall würde ich dir eher von einem Ankauf eines ETL-Tools (von wem auch immer) abraten und das Geld lieber anlegen für eine Individual-Applikationserstellung durch eine Software-Klitsche aus dem Nachbardorf, die euch ein wartbares und erweiterbares Grundgerüst hinterlääst.
Dürfte ebenfalls in der Größenordnung 6000 Ocken liegen.
Aber es deckt dann erstmal > 85% eurer real existierenden Anforderungen ab und nicht nur die durchschnittlichen 25% der Anforderungen, die ein xy-ETL-Tool im ersten Anlauf ohne Anpassungen schafft.
Grüße
Biber
Moin Lyriker,
da ich (soweit ich mich einschätzen kann) in den nächsten Tagen eher nicht aus dem fahrenden Bollerwagen heraus PNs schreiben werde - ist nicht gegen dich gerichtet- möchte ich wenigstens noch einen Vorschlag für eine mögliche Entscheidungshilfe Indiviual-Lösung vs. ETL-Tool zur Auflösung von Maschinenlogs machen.
Wie angedeutet - bei halb und lose strukturierten Daten wie Maschinenlogs sehe ich den potentiellen Benefit von ETL-Tools eher gering an, weil du aus einem grossen Text-Datenumfang in mehr oder weniger stilisiertem Denglish die 10 oder 15% Daten rausflöhen musst, die für dich auswertungsrelevant/für Nachverarbeitung geeignet sind.
Diese 10-15% "interessanten" Rohdaten musst du sicherlich fast vollständug mit String-und typkonvertierungsfunktionen nachbehandeln (mit SUBSTRING()/TO_DATE/TO_NUMBER etc etc- dem, was die IDL-Anbieter als ihre "Skript- und Makro-Sprache" bezeichnen.
Geht sicherlich.
Aber dann mach doch mal eine Milchmädchenrechnung und einen proof of concept mit diesen IDL-Hansels.
Milchmädchenrechnung:
Für ein Skriptchen in Java/VB/VBS/whatever individuell zusammengeschrotet von einem Informatikstudenten im 6. Semester für EIN bestimmtes Logfileformat ( Annahme: dokumentiertes Quellformat; definiertes Zielformat) müsstet ihr 3 Tage bezahlen a 100 Euro. Und wüsstet allerdings nicht, ob das Stück Code wartbar ist von einem eurer Vor-Ort-Leute.
Wenn das Ziel sein soll, mit eigenen vorhanden Kapazitäten flankiert von dem ETL-Tool wenigstens zeitlich dasselbe Ergebnis zu schaffen (also 3 MT für EINE Maschinenlog-Konvertierung in DB-geeignet) UND zusätzlich etwas wartbares zu haben, dann ...
--> dann nimm an, du (als einer, der in der fachlichen Thematik ja tief drin steckt) solltest in 3 MT das erste Mapping/den ersten Workflow mit dem IDL-Tool zusammenschrubbeln. Allein und ohne Vorkenntnisse.
--> wenn das leistbar wäre, dann müsste ein Profi, einer, der sich mit diesem Tool auskennt, das in der halben Zeit schaffen, also in anderthalb Tagen
-> Dann lade ein IDL-Menschen für 2 Tage ein, der soll ein Notebook mit seinem installierten Tool mitbringen und dir in diesen zwei Tagen mal diesen EINEN Workflow für EIN Maschinenlog zusammenbraten (=1,5 Tage) und die dann in den Mappings zeigen, wo du etwas anpassen musst, wenn sich das Quellformat ändert (der restliche halbe Tag).
Wenn dieser POC klappt und so etwas in zwei Tagen abzufrühstücken ist, dann ziehe ich alle Bedenken zurück.
Ansonsten erstmal einen schönen freien Tag morgen
Biber
da ich (soweit ich mich einschätzen kann) in den nächsten Tagen eher nicht aus dem fahrenden Bollerwagen heraus PNs schreiben werde - ist nicht gegen dich gerichtet- möchte ich wenigstens noch einen Vorschlag für eine mögliche Entscheidungshilfe Indiviual-Lösung vs. ETL-Tool zur Auflösung von Maschinenlogs machen.
Wie angedeutet - bei halb und lose strukturierten Daten wie Maschinenlogs sehe ich den potentiellen Benefit von ETL-Tools eher gering an, weil du aus einem grossen Text-Datenumfang in mehr oder weniger stilisiertem Denglish die 10 oder 15% Daten rausflöhen musst, die für dich auswertungsrelevant/für Nachverarbeitung geeignet sind.
Diese 10-15% "interessanten" Rohdaten musst du sicherlich fast vollständug mit String-und typkonvertierungsfunktionen nachbehandeln (mit SUBSTRING()/TO_DATE/TO_NUMBER etc etc- dem, was die IDL-Anbieter als ihre "Skript- und Makro-Sprache" bezeichnen.
Geht sicherlich.
Aber dann mach doch mal eine Milchmädchenrechnung und einen proof of concept mit diesen IDL-Hansels.
Milchmädchenrechnung:
Für ein Skriptchen in Java/VB/VBS/whatever individuell zusammengeschrotet von einem Informatikstudenten im 6. Semester für EIN bestimmtes Logfileformat ( Annahme: dokumentiertes Quellformat; definiertes Zielformat) müsstet ihr 3 Tage bezahlen a 100 Euro. Und wüsstet allerdings nicht, ob das Stück Code wartbar ist von einem eurer Vor-Ort-Leute.
Wenn das Ziel sein soll, mit eigenen vorhanden Kapazitäten flankiert von dem ETL-Tool wenigstens zeitlich dasselbe Ergebnis zu schaffen (also 3 MT für EINE Maschinenlog-Konvertierung in DB-geeignet) UND zusätzlich etwas wartbares zu haben, dann ...
--> dann nimm an, du (als einer, der in der fachlichen Thematik ja tief drin steckt) solltest in 3 MT das erste Mapping/den ersten Workflow mit dem IDL-Tool zusammenschrubbeln. Allein und ohne Vorkenntnisse.
--> wenn das leistbar wäre, dann müsste ein Profi, einer, der sich mit diesem Tool auskennt, das in der halben Zeit schaffen, also in anderthalb Tagen
-> Dann lade ein IDL-Menschen für 2 Tage ein, der soll ein Notebook mit seinem installierten Tool mitbringen und dir in diesen zwei Tagen mal diesen EINEN Workflow für EIN Maschinenlog zusammenbraten (=1,5 Tage) und die dann in den Mappings zeigen, wo du etwas anpassen musst, wenn sich das Quellformat ändert (der restliche halbe Tag).
Wenn dieser POC klappt und so etwas in zwei Tagen abzufrühstücken ist, dann ziehe ich alle Bedenken zurück.
Ansonsten erstmal einen schönen freien Tag morgen
Biber
Moin Lyriker,
wenn euer Streben ist, alle Logdateien in ausgedünnter Form in Richtung Datenbank zu ziehen, um es da zu aggregieren, zu clustern und auszuwerten empfehle ich das einzelfallspezifische Skriptkonvertieren in ein CSV-Format und anschliessenedes Lesen mit den dir bekannten Mitteln, die MSSSQL da bietet.
Also kein ETL-Tool für deinen Zweck.
Falls es auch denkbar wäre, die Auswertung NICHT über alle Daten/alle Logfiles zu machen, sondern ohne Umwandlung in Tabellenstrukturen direkt in dem schwach strukturierten Textgestrunkele nach "Auffälligkeiten" und bestimmten Fehlern zu suchen, dann wirf einen Blick auf das Nischenprogramm Splunk.
Ich weiss nicht wo du wohnst, aber die haben morgen in Hamburg und übermorgen in München eine ihrer Roadshows.
Deren Tool kann genau dieses: in wie-auch-immer-(un)strukturierten Daten (z.B. Mschinenlogs) mögliche Gemeinsamkeiten/Suchbegriffe/Muster zu erkennen, zu clustern und zu visualisieren - rattenscharfes Teil.
Und eine Probe-Lizenz für bis zu 10 GByte Daten ist m.W. auch nach wie vor für lau.
Ist ein anderer Ansatz als die übliche Quartalsfehlersummenstatistik, die du in der relationalen Welt dann am Ende des Weges als Benefit hast, aber vielleicht erwägenswert.
Grüße
Biber
wenn euer Streben ist, alle Logdateien in ausgedünnter Form in Richtung Datenbank zu ziehen, um es da zu aggregieren, zu clustern und auszuwerten empfehle ich das einzelfallspezifische Skriptkonvertieren in ein CSV-Format und anschliessenedes Lesen mit den dir bekannten Mitteln, die MSSSQL da bietet.
Also kein ETL-Tool für deinen Zweck.
Falls es auch denkbar wäre, die Auswertung NICHT über alle Daten/alle Logfiles zu machen, sondern ohne Umwandlung in Tabellenstrukturen direkt in dem schwach strukturierten Textgestrunkele nach "Auffälligkeiten" und bestimmten Fehlern zu suchen, dann wirf einen Blick auf das Nischenprogramm Splunk.
Ich weiss nicht wo du wohnst, aber die haben morgen in Hamburg und übermorgen in München eine ihrer Roadshows.
Deren Tool kann genau dieses: in wie-auch-immer-(un)strukturierten Daten (z.B. Mschinenlogs) mögliche Gemeinsamkeiten/Suchbegriffe/Muster zu erkennen, zu clustern und zu visualisieren - rattenscharfes Teil.
Und eine Probe-Lizenz für bis zu 10 GByte Daten ist m.W. auch nach wie vor für lau.
Ist ein anderer Ansatz als die übliche Quartalsfehlersummenstatistik, die du in der relationalen Welt dann am Ende des Weges als Benefit hast, aber vielleicht erwägenswert.
Grüße
Biber