FlowHeater Demo Video
 
Der Daten Import / Export Spezialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Schauen Sie sich auch die verfügbaren Beispiele zum TextFile Adapter an evtl. kann Ihre Frage hiermit schon beantwortet werden: Codepage konvertieren 1 / 2 , Verarbeitung von CSV Kopf- und Fußzeilen , Import und Export von vCard Textdateien
  • Seite:
  • 1

THEMA:

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 2 Wochen her #4023

  • Michael Schaffert
  • Michael Schafferts Avatar Autor
  • Offline
  • Beiträge: 16
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

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Letzte Änderung: von Michael Schaffert.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 2 Wochen her #4026

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1665
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 2 Wochen her #4027

  • Michael Schaffert
  • Michael Schafferts Avatar Autor
  • Offline
  • Beiträge: 16
Vielen Dank für das schnelle Feedback und den Tipp mit dem vorgelagerten Verarbeitungsschritt.
Hat prima geklappt!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 1 Woche her #4033

  • Michael Schaffert
  • Michael Schafferts Avatar Autor
  • Offline
  • Beiträge: 16
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 1 Woche her #4036

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1665
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.
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 3 Tage her #4062

  • Michael Schaffert
  • Michael Schafferts Avatar Autor
  • Offline
  • Beiträge: 16
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 2 Tage her #4066

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1665
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
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 2 Tage her #4069

  • Michael Schaffert
  • Michael Schafferts Avatar Autor
  • Offline
  • Beiträge: 16
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 9 Monate 1 Tag her #4071

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1665
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 5 Monate 2 Wochen her #4149

  • Michael Schaffert
  • Michael Schafferts Avatar Autor
  • Offline
  • Beiträge: 16
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 5 Monate 2 Wochen her #4150

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1665
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 2 Monate 6 Tage her #4324

  • Michael Schaffert
  • Michael Schafferts Avatar Autor
  • Offline
  • Beiträge: 16
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 oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 2 Monate 5 Tage her #4325

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Beiträge: 1665
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.
Anhänge:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Import-Datei auf Spaltenanzahl und Feldnamen prüfen 2 Monate 5 Tage her #4326

  • Michael Schaffert
  • Michael Schafferts Avatar Autor
  • Offline
  • Beiträge: 16
Hallo Robert!

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

Viele Grüße
Michael

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

  • Seite:
  • 1
Ladezeit der Seite: 0.345 Sekunden

andere Sprachen

en

FlowHeater Home

de en

Impressum/Kontakt

Datenschutz

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

Follow us on

twitter  facebook

YouTube

 de en