Skip to main content
Weil einfach - produktiver ist

Der Daten Spezialist

Konvertieren Sie die Daten mühelos zwischen verschiedenen Formaten ohne Programmierkenntnisse dank Visual Designer. Effizient und super einfach.
Flowheater Download

Import-Datei auf Spaltenanzahl und Feldnamen prüfen

  • Michael Schaffert
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
3 Jahre 5 Monate her - 3 Jahre 5 Monate her #4023 von Michael Schaffert
Import-Datei auf Spaltenanzahl und Feldnamen prüfen wurde erstellt von Michael Schaffert
Hallo zusammen,

gibt es eine Möglichkeit, beim TextFileAdapter (Read) zu prüfen, ob die Eingangsdatei (in diesem Fall CSV) die korrekte Spaltenanzahl aufweist und idealerweise auch noch die Spaltenüberschriften korrekt sind? Es geht darum zu prüfen, ob die Eingangsdatei das richtige Format hat, ansonsten sollte der Flow abgebrochen werden mit einer Fehlermeldung.

Vielen Dank für Eure Antworten!

Viele Grüße
Michael
Letzte Änderung: 3 Jahre 5 Monate her von Michael Schaffert.

Bitte Anmelden um der Konversation beizutreten.

Mehr
3 Jahre 5 Monate her #4026 von FlowHeater-Team
Hallo Herr Schaffert,

das geht über einen vorgelagerten Verarbeitungsschritt.

Hier lesen Sie über den TextFile Adapter lediglich die erste Zeile (=Spaltennamen) in ein Feld ein. Aktivieren Sie hierzu auf dem Reiter „Trennzeichen“ den Punkt „Anderes Trennzeichen“ und vergeben Sie einen Wert der in Ihren Daten nicht vorkommt, z.B. #!#

So werden die Spaltenüberschriften in ein Feld eingelesen. Diesen Wert können Sie dann über einen IF-THEN-ELSE Heater prüfen ob das einem Refernzwert entspricht. Falls nicht beendet der Stop Heater die Verarbeitung mit einer definierbaren Fehlermeldung.

Hinweis: Der zweite Stop Heater wird nur benötigt damit bei der Spaltenprüfung nicht unnötig alle Daten der CSV Datei gelesen werden müssen.

Im Anhang finden Sie ein kleines Beispiel dazu



Dateianhang:

Dateiname: csv-spalte...efen.zip
Dateigröße:10 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

  • Michael Schaffert
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
3 Jahre 5 Monate her #4027 von Michael Schaffert
Michael Schaffert antwortete auf Import-Datei auf Spaltenanzahl und Feldnamen prüfen
Vielen Dank für das schnelle Feedback und den Tipp mit dem vorgelagerten Verarbeitungsschritt.
Hat prima geklappt!

Bitte Anmelden um der Konversation beizutreten.

  • Michael Schaffert
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
3 Jahre 5 Monate her #4033 von Michael Schaffert
Michael Schaffert antwortete auf Import-Datei auf Spaltenanzahl und Feldnamen prüfen
Hallo Herr Stark,

ergänzend zu meiner Frage mit der Feldnamen-Prüfung hat sich die Überlegung ergeben, ob es auch möglich ist, abhängig vom Ergebnis dieser Prüfung, den 2. Arbeitsschritt zu steuern.
Das heißt, ist die Eingabe-Datei mit den Feldnamen des Typs 1 (Name, Vorname, Kd.-Nr.) versehen, soll eine andere Verarbeitung durchgeführt werden als wenn diese vom Typ 2 (Firma, Kd-Nr.) sind. 
Ist so etwas denkbar?

Viele Grüße
Michael 

Bitte Anmelden um der Konversation beizutreten.

Mehr
3 Jahre 5 Monate her #4036 von FlowHeater-Team
Hallo Herr Schaffert,

ja und nein. Es wäre theoretisch denkbar hier über den .NET Script Heater was zu bauen, ist aber schwer wartbar und nicht empfehlenswert. Auf der TODO Liste steht so eine ähnliche Funktionalität für den FlowHeater Server um bei einer Verzeichnisüberwachung zu entscheiden welche Definition jetzt aufgerufen werden muss.

Bis dahin am besten über das Batch Modul und Wildcards arbeiten. Meistens haben die zu verarbeitenden Textdateien einen passenden Namen worüber eingegrenzt werden kann um welchen Dateityp es sich handelt.

z.B.
Code:
set FHBATCH="C:\Program Files (x86)\FlowHeater V4\BIN\FHBatch.exe" %FHBATCH% /ReadFileName “Hersteller-1-*.csv” Import-Hersteller-1.fhd" %FHBATCH% /ReadFileName “Hersteller-2-*.csv” Import-Hersteller-2.fhd" …

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden um der Konversation beizutreten.

  • Michael Schaffert
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
3 Jahre 5 Monate her #4062 von Michael Schaffert
Michael Schaffert antwortete auf Import-Datei auf Spaltenanzahl und Feldnamen prüfen
Hallo Herr Stark,

ganz so einfach mit den Dateinamen stellt sich das leider nicht dar.
Generell funktioniert das mit den Wildcards und dem Batch-Modul ganz gut.
Es gibt jedoch einen Fall, bei dem die Dateien gleich heißen und sich nur über den internen Aufbau der Spalten unterscheiden.
Haben Sie noch eine Idee, wie man das abfangen könnte?

Viele Grüße
Michael Schaffert

Bitte Anmelden um der Konversation beizutreten.

Mehr
3 Jahre 5 Monate her #4066 von FlowHeater-Team
Hallo Michael,

hier mal ein Beispiel wie es geht, im Anhang gibt´s auch ein kleines Beispiel dazu.

Folgendes wird gemacht)
Im ersten Verarbeitungsschritt wird geprüft um welchen Dateityp es sich handelt. Hierzu wird untenstehendes C# Skript für den .NET Script Heater verwendet Im Skript werden erstmal alle Verarbeitungsschritte, außer dem ersten Verarbeitungsschritt, deaktiviert. Dann wird anhand der CSV Spaltenüberschriften geprüft welche Datei vorliegt und dieser Verarbeitungsschritt wird dann aktiviert, siehe Kommentare im Skript.

Die Definition benötigt also einen initialen ersten Verarbeitungsschritt um die Steuerung zu implementieren, sowie beliebig viele die dann jeweils einen bestimmten Dateityp verarbeiten.

Wie schon geschrieben ist das sehr komplex und nicht unbedingt wartungsfreundlich.

C# Skript um Dateityp/Aufbau zu prüfen und abhänig davon einen Verarbeitungsschritt zu aktivieren
Code:
public object DoWork() {  int step = 0;  string header = (string)InValues[0].GetString();  // alle ausser ersten Verarbeitungsschritt deaktivieren!  for (int i = 1; i < AdapterRead.Flow.Steps.Count; i++)  {  AdapterRead.Flow.Steps[i].Active = false;  }  // CSV Spaltenüberschriften prüfen  switch(header)  {  case "ID;S1;S2":  // wenn dieser Typ, dann step = 2;  // soll der 2. Verarbeitungsschritt ausgeführt werden break;  case "ID;S1":  // wenn dieser Typ, dann step = 3;  // soll der 3. Verarbeitungsschritt ausgeführt werden break;  // weitere Prüfungen nach diesen Schema    // Falls keine Prüfung zutrifft wird ein Fehler ausgegeben.  default: throw new Exception("Dateitype nicht erkannt!");  }  AdapterRead.Flow.Steps[step - 1].Active = true;  return header; }

Dateianhang:

Dateiname: datei-aufb...efen.zip
Dateigröße:14 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

  • Michael Schaffert
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
3 Jahre 5 Monate her #4069 von Michael Schaffert
Michael Schaffert antwortete auf Import-Datei auf Spaltenanzahl und Feldnamen prüfen
Hallo Robert,

Vielen Dank für das kleine Script.
So kompliziert fand ich das jetzt gar nicht. C++ kenn ich noch aus dem Studium.  =)
Ich habe es noch ein bisschen angepasst und jetzt funktioniert es genauso wie ich es mir vorgestellt hatte. Super!

Eine kleine Frage hab ich aber dennoch dazu: Kann man die Warnungen, welcher Verarbeitungsschritt nicht ausgeführt wird, in der Batch-Ausführung unterdrücken? Das verwirrt sonst später die Anwender, die sollen sich ja auch wirkliche Warnungen und Fehler konzentrieren können.
Wenn ich beim 1. Verarbeitungsschritt die Checkbox Eigenschaften "Warnungen ignorieren" setze, hat das irgendwie keine Auswirkung auf die Ausgabe auf der Konsole.

Viele Grüße
Michael

Bitte Anmelden um der Konversation beizutreten.

Mehr
3 Jahre 5 Monate her #4071 von FlowHeater-Team
Hallo Michael,

das geht leider nicht, außer das Batch Modul wird explicit mit der Option /ExecuteSteps aufgerufen. In dem Fall wird, falls Verarbeitungsschritte übersprungen wurden, keine Warnung ausgegeben.

Alternativ dazu könnten alle Warnungen im Batch Modul  über die Option /DisableWarnings deaktiviert werden.

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden um der Konversation beizutreten.

  • Michael Schaffert
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
3 Jahre 1 Monat her #4149 von Michael Schaffert
Michael Schaffert antwortete auf Import-Datei auf Spaltenanzahl und Feldnamen prüfen
Hallo Robert,

nachdem die Anwendung der Spaltenanzahl- und Spaltennamen-Prüfung hervorragend mit CSV-Dateien klappt, stehe ich jetzt vor dem Problem, dass ich das auch für XLSX (Excel)-Dateien benötigen könnte. Gibt es da auch eine Lösung? Bzw. gibt es eine generelle Lösung die Spaltendefinition einer Eingabedatei zu prüfen, unabhängig von ihrem Format, also ohne dass man einfach nur die 1. Zeile einliest?

Viele Grüße
Michael

Bitte Anmelden um der Konversation beizutreten.

Mehr
3 Jahre 1 Monat her #4150 von FlowHeater-Team
Hallo Michael,

die Lösung würde für den Excel Adapterfast“ genauso funktionieren. Das Problem hier ist, dass die erste Zeile nicht komplett eingelesen werden kann. Hier müssen zuerst im ersten Verarbeitungsschritt die Spaltenüberschriften separat eingelesen werden.

Achtung: Hier nicht die Option „1. Zeile enthält Feldnamen“ auswählen!

Die so eingelesenen Excel Spaltennamen (Excel Spalten A, B, C, …) fügen Sie dann mit Hilfe des String Append Heater zu einer Zeichenkette zusammen, die dann über das oben erwähnte C# Skript geprüft werden kann. Im Anhang finden Sie ein kleines Beispiel dazu.

PS: Aktuell gibt es keine generelle Lösung dafür. Diese Funktion steht aber für eine spätere Version mit auf der TODO Liste. Termine dazu können aktuell noch nicht genannt werden.



Dateianhang:

Dateiname: excel-spal...efen.zip
Dateigröße:11 KB

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Anhänge:

Bitte Anmelden um der Konversation beizutreten.

  • Michael Schaffert
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
2 Jahre 10 Monate her #4324 von Michael Schaffert
Michael Schaffert antwortete auf Import-Datei auf Spaltenanzahl und Feldnamen prüfen
Hallo Robert,

die Methode mit der Spaltenüberprüfung mittels C#-Skript hat sich in der Praxis wirklich gut bewährt, sowohl mit dem Text- als auch dem Excel-Adapter. Danke für Deine Hilfe!

Jetzt habe ich noch eine Frage zu einer Erweiterung dieser Methode:
Gibt es eine Möglichkeit, den Excel Adapter dazu zu bringen, leere Zeilen zu überspringen, und dann die erste Zeile mit Inhalt an das C# Skript zurückzuliefern?
Das Problem im Moment sind Excel-Dateien, bei denen die Spaltenüberschriften nicht in Zeile 1, sondern in Zeile 2 oder 3 stehen. Die darüberliegenden Zeilen sind leer.

Viele Grüße
Michael

Bitte Anmelden um der Konversation beizutreten.

Mehr
2 Jahre 10 Monate her #4325 von FlowHeater-Team
Hallo Michael,

wenn du die aktuellste Version einsetzt macht das der Excel Adapter automatisch. Hier wird solange gelesen bis keine komplett Leere Zeilen mehr gefunden werden, erst dann beginnt die Verarbeitung.

Wie viele Leerzeilen max. berücksichtigt bzw. überlesen werden sollen kannst du auf dem Reiter erweitert unter „Einlesen nach X Leerzeilen beenden“ einstellen.

 

gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.

Bitte Anmelden um der Konversation beizutreten.

  • Michael Schaffert
  • Autor
  • Offline
  • Benutzer
  • Benutzer
Mehr
2 Jahre 10 Monate her #4326 von Michael Schaffert
Michael Schaffert antwortete auf Import-Datei auf Spaltenanzahl und Feldnamen prüfen
Hallo Robert!

Vielen Dank für Deine schnelle Rückmeldung.
Ausprobiert, getestet, funktioniert. Perfekt!

Viele Grüße
Michael

Bitte Anmelden um der Konversation beizutreten.

Ladezeit der Seite: 0.554 Sekunden

FlowHeater - Der Daten Spezialist

Effiziente Datenintegration und Transformation mit FlowHeater - Ihre Lösung für nahtlosen Datentransfer.

Rechtliches

Support & Kontakt

Kontaktinformation

Telefon:
0951 / 99339792

E-Mail:
Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.


Copyright © 2009-2024 by FlowHeater GmbH. Alle Rechte vorbehalten.