Der Daten Import / Export Spezialist
 
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
×

Erweiterte Suche

Suche nach Stichwort
×

Suchoptionen

Finde Beiträge von
Ergebnisse sortieren nach
Suche zu einem bestimmten Zeitpunkt
Zu Resultat springen
Suche in Kategorien
×

Suchergebnisse

Gesucht wurde: SQL Lookup
24 Apr 2021 07:07
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Herrmannsfeldt,

da gibt es mehrere Möglichkeiten. Die einfachste wäre es die zwei Felder (EAN und Bestand) über zwei SQL Heater per Daten Lookup aus der anderen Tabelle zu holen. Hierzu die Artikelnummer über einen Parameter Heater als FlowHeater Parameter setzen und anschließend über den SQL Heater holen.

          select EAN from Tabelle2 where Artikelnummer = $ARTNR$

$ARTNR$ ist in diesem Fall der Name des FlowHeater Parameters.

Die andere Alternative wäre es über einen SQL JOIN auf der READ Seite die Daten gleich vom Datenbankserver anreichern zu lassen. Hierzu müssen Sie den SQL SELECT auf der READ Seite ein wenig anpassen.

          select * from TABELLE_1 inner join TABELLE_2 on TABELLE_1.ArtikelNr = TABELLE_2.ArtikelNr

Wenn Sie anschließend auf „Felder einlesen“ klicken werden Ihnen alle Felder beider Tabellen angezeigt. Die Felder sind anhand der Artikelnummer miteinander verknüpft.

Ein Beispiel jeweils zum Daten Lookup sowie SQL JOIN finden Sie in folgenden Artikel: SqlServer Adapter Feld aus zusätzlicher SQL-Tabelle in Textfile
 
Kategorie: Allgemein
02 Mär 2021 18:31
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Nick,

ok, diese Information fehlte mir. Der InMemory Adapter unterstützt derzeit keine selbst generierten UPDATES über den SQL Heater . UPDATES werden nur direkt über den InMemory Adapter unterstützt. Es können auf InMemory Tabellen über den SQL Heater lediglich LOOKUPS oder aber eine Anzahlermittlung wie „SELECT COUNT(*)“ durchgeführt werden. Der SQL Server Adapter bzw. alle anderen Datenbank Adapter unterstützen dagegen sämtliche SQL Befehle die von der jeweiligen Datenbank akzeptiert werden, auch sehr komplexe.

Eine fertige Lösung für Ihr Problem habe ich leider nicht. Im Anhang aber mal ein Beispiel wie so etwas realisiert werden könnte.

Folgendes wird gemacht:

Verarbeitungsschritt 1) Generieren der Arbeitstage, für jeden Mitarbeiter 365 Datensätze in einer InMemory Tabelle nach dem Schema DD_MM angelegt.

Verarbeitungsschritt 2) Abwesenheiten eintragen, es werden die jeweiligen Datensätze pro Mitarbeiter mit einem X aktualisiert.

Verarbeitungsschritt 3) Ausgeben der Spaltenüberschriften. PersNr;01_01;02_02;…..

Verarbeitungsschritt 4) Ausgeben der Daten gruppiert nach Mitarbeiter

Achtung: Die Defintion funktioniert nur richtig wenn Sie nicht im Testmodus ausgeführt wird!

Schauen Sie sich das mal an, evtl. hilft das Ihr Vorhaben umzusetzen.


Dateianhang:

Dateiname: abwesenheiten.zip
Dateigröße:22 KB
Kategorie: InMemory Adapter
08 Okt 2020 08:32
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Wenn das Feld in der gleichen MS SQL-Server Datenbank wie die READ Tabelle ist, können Sie die Verknüpfung (JOIN) dem MS SQL Server überlassen.

Hierzu einfach den SQL SELECT im READ Adapter erweitern.

    z.B. select TABELLE_1.*, TABELLE_2.ZUSATZ from TABELLE_1 inner join TABELLE_2 on TABELLE_1.ID = TABELLE_2.ID

und anschließend die Felder erneut einlesen. So verknüpft der MS SQL Server die zwei Tabellen miteinander und liefert alle Felder der Tabelle_1 sowie das Feld ZUSATZ, passend zur ID, aus TABELLE_2.

Hinweis: Dieser Weg ist auf jeden FALL vorzuziehen und schneller als der jetzt beschriebene Weg über einen Datenlookup!

Wenn sich das Feld in einer anderen Datenbank, zum Beispiel in der zu Importierenden Tabelle befinden funktioniert das nicht mehr. Hier müssen Sie die Daten mittels des SQL Heater bzw. dem Lookup Heater pro Datensatz lesen.

Im SQL Heater tragen Sie hier dann Ihren SQL SELECT ein.

    z.B. select Verweis from ADRESSZUORDNUNG where ADRESSZUORDNUNG.Adresse = '$ADRESSE$'

Wichtig ist hier der FlowHeater Parameter $ADRESSE$ für die WHERE Klausel. Diesen Parameter müssen Sie über den Set Parameter Heater setzen, siehe Screenshot. So wird pro Datensatz ein SELECT auf die angegebene Datenquelle abgesetzt und das benötigte Feld zurückgeliefert.

Kategorie: SqlServer Adapter
21 Sep 2020 16:30
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Fajkus,

auf der WRITE Seite geht das leider nicht direkt.

Sie können aber über den SQL Heater (oder auch Lookup Heater ) einen Datenbank Lookup durchführen und dann mittels des Rückgabewertes und dem Filter Heater die nicht gewünschten Datensätze, vor der eigentlichen Verarbeitung, herausfiltern.

Ich habe Ihnen im Anhang ein kleines Beispiel angefügt. Hier wird zuerst über den Parameter Heater ein FlowHeater Parameter $ID$ mit dem aktuellen Feldinhalt der READ Seite ( CSV Datei ) gesetzt. Dieser Paramater wird dann im SQL Heater verwendet um die Abfrage mit WHERE Bedingung auf der WRITE Abzusetzen. Der Rückgabewert wird dann in einer IF-THEN-ELSE Bedingung geprüft und falls der Wert „1“ ist wird der Datensatz dann durch den Filter Heater aus der Verarbeitung ausgeschlossen.

Schauen Sie sich mal das Beispiel im Anhang an, ich denke damit sollten Sie zurechtkommen.



Dateianhang:

Dateiname: where-auf-write.zip
Dateigröße:7 KB
Kategorie: SqlServer Adapter
14 Feb 2020 06:18
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Berto,

Optimierungen gehen immer :-)

Hinweis: Die Verarbeitung läuft immer gleich ab. Es ist egal ob die Definition manuell über den Designer , per Skript über das Batch Modul oder aber komplett automatisiert über den FlowHeater Server ausgeführt wird!

Um eine genau Aussage bzgl. Optimierung treffen zu können, wäre natürlich eine tiefgreifende Analyse Ihrer Daten sowie Anforderung notwendig. Bitte haben Sie Verständnis dafür, dass das nicht Bestandteil des kostenlosen Supportes hier im Forum sein kann.

Aufgrund Ihrer beiden vorherigen Fragen hier
  1. Fehlermeldung bei identischen Schlüssel 
  2. FH Designer: Fehlermeldung Range-Objekt 
hätte ich eine Anmerkung)

Einmal wird das Problem sein, dass Sie in der InMemory Adapter Tabelle keinen eindeutigen Schlüssel definiert haben. Das bremst die Verarbeitung enorm aus! Hier würde ich mal beim Einlesen der Daten einen eindeutigen Schlüssel (über AutoID oder aber eine GUID ) definieren anhand der dann die Updates ausgeführt werden. Die AGS Nummer holen Sie sich dann per SQL Heater oder String Replace Heater aus der Referenztabelle. Beim Einlesen der Referenztabelle wäre es auch Hilfreich wenn hier doppelte Werte per Filter Heater gefiltert werden würden, die werden ja eh wieder überschrieben! So können Sie darüber auch einen eindeutigen Index erstellen und die Verarbeitung sollte deutliche beschleunigt werden. Ich würde sagen die Verarbeitungszeit wird so mindestens halbiert, wenn nicht noch mehr!

Vorgehen kurz zusammengefasst
  1. Einlesen der  CSV Referenztabelle in eine InMemory Tabelle und filtern per Filter Heater auf doppelte Werte. Eindeutigen Schlüssel anlegen über PLZ+Strasse+Hausnummer

  2. Einlesen der CSV  Kunden die abgeglichen werden sollen in eine weitere InMemory Tabelle und hier ein weiteres Feld mit einer  AutoID oder aber besser einer GUID anlegen. Weiter keine Verarbeitung in diesem Verarbeitungsschritt.

  3. Dann lesen der Kundendaten über die InMemory Tabelle und updaten in die gleiche InMemory Tabelle. PK ist das neue Feld ( AutoID oder aber GUID ). In diesen Verarbeitungsschritt ermitteln Sie mittels des SQL Heater  oder String Replace Heater per Lookup die AGS Nummer (ggf. auch weitere Felder) aus der im ersten Verarbeitungsschritt eingelesene Referenztabelle.
Kategorie: Allgemein
03 Aug 2019 13:02
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Sauerborn,

in der aktuellen Version kann im SQL bzw. Lookup Heater für den Standard Rückgabewert nicht NULL bzw. DBNULL angegeben bzw. ausgewählt werden. In der aktuellen Beta Version wurde dieses Feature nun eingebaut.

Alternativ dazu könnte über den IF-THEN-ELSE Heater geprüft werden ob das Feld Leer bzw. einen bestimmten Wert hat um dann explizit mittels des NULL Heater dem Feld DBNULL zuzuweisen, siehe Screenshot.





BetaVersion Download
FlowHeaterBeta 32 Bit
FlowHeaterBeta 64 Bit
FlowHeaterServer Beta
Kategorie: MySQL Adapter
18 Mär 2019 17:17
  • Nick
  • Nicks Avatar
Hallo Herr Stark, 

ich habe mir die Vorgehensweise angesehen. Besten Dank. Es funktioniert soweit einwandfrei. Alle Daten sind auf einem SQL-Server. Wo ich allerdings nicht weiter komme:

Ich habe noch Daten aus einer Tabelle wo ich allerdings quasi noch suchen muss: In der Tabelle steht z.B. 1-5;Test. Ich habe nun den Wert 2 und wenn dieser vorkommt, muss Test geliefert/geupdated werden.

Eigentlich mache ich das bisher einfach mit <= und >=. Im InMemory weiss aber nun nicht, wie dieses noch unterbringe. Ich habe es u.a. mit dem SQL-Heater und Lookup-Heater versucht was aber nicht wirklich funktioniert.

Viele Grüsse
Nick

P.S. Das Video-Tutorial ist klasse.
Kategorie: InMemory Adapter
08 Mär 2019 15:34
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Nick,

im Prinzip geht es so wie in folgenden Beispiel beschreiben:  CSV und Excel Daten über SQLite Datenbank zusammenführen

Tipp: Ganz unten finden Sie ein ausführliches Tutorial Video.

Ich habe mal exemplarisch für ein Update über mehrere Felder ein kurzes Bespiel für den InMemory Adapter beigefügt.

Vorgehensweise
  1. Datei input2.txt in die InMemory Tabelle einlesen
  2. Datei input1.txt einlesen und den Preis in der InMemory Tabelle aktualisieren. Achtung: Adapter auf nur Update stellen und mehrere Felder als Schlüsselfeld für Updates konfigurieren!
  3. Ausgabe der InMemory Tabelle
Wenn die Daten in einer SQL Datenbank stehen würde es alternativ auch über den SQL Heater oder Lookup Heater und einem Datenlookup funktionieren.

Dateianhang:

Dateiname: daten-anreichern.zip
Dateigröße:3 KB
Kategorie: InMemory Adapter
03 Feb 2019 10:54
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Niklas,

hier das versprochen Beispiel. Im Beispiel wird allerdings eine CSV Datei  verwendet um den Excel SVERWEIS abzubilden. Das kann aber 1:1 auch mit dem Excel Adapter  abgebildet werden.

Im Beispiel wurden drei Varianten ( SQL Heater , Lookup Heater  und String Replace Heater ) verwendet wie ein Excel SVERWEIS im FlowHeater und dem neuen InMemory Adapter  Tabellen abgebildet werden kann.

Die Fehlermeldung „Column ‚Person‘ is constrained to be unique. Value 10421is already present”. Können Sie auf zwei Arten eliminieren. Einmal indem Sie den Schlüssel nicht als “Unique” kennzeichnen, so können doppelte Schlüsselfelder in der Tabelle vorkommen. Oder aber auf dem Reiter „Allgemein“ die Option „Vorhandene Datensätze ignorieren“ aktivieren. So werden bereits vorhandene Datensätze nicht nochmal an die Tabelle angefügt. 

PS: Die Version 4.1.4  wurden nun offiziell Released. Jetzt steht auch die Dokumentation zum InMemory Adapter zur Verfügung.

Dateianhang:

Dateiname: excel-sverweis.zip
Dateigröße:3 KB






PSS: Die Analyse mit der geöffneten Excel Datei dauert noch an!
Kategorie: Excel Adapter
01 Dez 2018 11:06
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Herrmannsfeldt,

für eine bedingte Ersetzung benötigen Sie eine Kombinationaus einem CSV Lookup über den String Replace Hearer und dem IF-THEN-Else Heater für die Bedingung. Im Anhang finden Sie ein kleines Beispiel dazu. Das Bespiel verwendet den zweimal den Textfile Adapter , funktioniert so aber auch zusammen mit dem MySQL Adapter .

Für den CSV Lookup müssen Sie den String Replace Heater sokonfigurieren wie im Screenshot. In der CSV Liste tragen Sie die Artikelnummern
nach dem Schema Artiklennummer;Menge ein die Sie ersetzen möchten. Hinweis: Das können auch sehr viele sein!

Wichtig ist, dass Sie für den Standardwert falls nichtgefunden einen Wert angeben der nicht als Artikelnummer vorhanden ist, im Beispiel wird „!Nicht gefunden!“ verwendet. Auf diesen Wert wird dann im IF-THEN-ELSE Heater geprüft.Hierüber wird dann entschieden welcher Wert in das MySQL Feld dann eingetragen wird. Entweder das Feld aus der CSV Ersetzungsliste oder aber der Original Feldinhalt aus der MySQL Tabelle.

CSV Lookup Konfiguration


Dateianhang:

Dateiname: bedingte-e...zung.zip
Dateigröße:2 KB
Kategorie: MySQL Adapter
17 Nov 2018 14:23
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Rindt,

nach erneuter Prüfung ist das eigentlich kein Fehler, das generieret XML Dokument wäre so genauso valide bzw. stimmig. Das Problem hier ist, dass anscheinend die Anwendung, die das XML einlesen möchte, hiermit nicht richtig umgehen kann. Das Problem wurde aber trotzdem in der aktuellen Beta behoben :-)

Im „schemaLocation“ Attribut können mehrere vorhandene (Namespace) Elemente aufgelistet werden (=Namespace neutral), deshalb wurde von der verwendeten Funktion (XML Bibliothek) das Namespace Präfix für dieses Attribut standardmäßig entfernt. In der aktuellen Beta wurde das korrigiert bzw. geändert. Über untenstehende Links können Sie sich die Beta Version herunterladen.

Folgende Änderungen sind hier vorhanden.
1.    Neuer InMemory Adapter
2.    SQL , Lookup , und String Replace Heater mit Unterstützung für InMemory Adapter Tabellen.
3.     If-Then-Else Heater mit Zeichenkettenvergleich ohne Leerzeichen am Anfang/Ende
4.    BugFix: GroupBy Heater in Verbindung mit Filter Heater.

Zum InMemory Adapter) Der ist ein absolutes Highlight! Hiermit können beliebige Tabellendaten (CSV, Excel, SQL, …) in Hauptspeichertabellen eingelesen werden. Diese Tabellen können im Hauptspeicher weiter angereichert bzw. abgefragt werden und zum Schluss können diese Tabelle natürlich auch wieder in physikalische Dateien bzw. Datenbanktabellen ausgegeben werden. Das Ganze ist, da Hauptspeicher basierend, rasend schnell. Hier finden Sie ein Beispiel dazu wo der klassische CSV Lookup über den  String Replace Heater auf InMemory Tabellen umgestellt wurde.

 Beispiel: Datanorm - Zeilen zusammenfassen


Beta Version Download
FlowHeater Beta 32 Bit
FlowHeater Beta 64 Bit
FlowHeater Server Beta
Kategorie: XML Adapter
29 Nov 2017 08:51
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Marko,

Sie benötigen dazu einmal einen SQL Heater (oder aber Lookup Heater ) über den Sie die Information anhand eines eindeutigen Schlüssels von der WRITE Seite holt.

Anschließend führen Sie über den IF-THEN-ELSE Heater Ihren Vergleich durch und filtern alle Datensätze heraus die nicht der Bedingung entsprechen.
Im Datenbank Adapter auf der WRITE Seite müssen Sie nun noch einstellen dass Sie lediglich UPDATES fahren möchten und verbinden von READ nach WRITE den Primary Key sowie das Feld das Sie aktualisieren möchten, das war´s.

Hier finden Sie einige Beispiele wie es gehen könnte:
Wert (WRITE) in der Verarbeiten einbeziehen
Umrechnung von Währungen abhängig vom Belegdatum
Änderung an Datensätzen feststellen


Im Anhang finden Sie ein "ungetestetes" Beispiel dazu, das können Sie ggf. an Ihre bedürfnisse anpassen.



Dateianhang:

Dateiname: read-write-filter.zip
Dateigröße:2 KB
Kategorie: SqlServer Adapter
12 Jul 2017 05:45
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Herr Wilhelm,

ich vermute jetzt mal der Zeitstempel soll bei Import und Update jeweils in ein anderes Feld geschrieben werden?

Der einfachste Weg das zu tun wäre es über zwei separate FlowHeater Definitionen auszuführen, so führt der FlowHeater die benötigten Prüfungen automatisch durch.

Zuerst führen Sie die nur UPDATE Definition aus. Hier müssen Sie im SQLServer Adapter lediglich die Option „Daten aktualisieren (Update)“ aktivieren. So prüft der SQLServer Adapter anhand des angegebene Primary Keys ob der betroffene Datensatz existiert und führt nur in diesem Fall ein UPDATE aus.

Anschließend führen Sie die nur INSERT Definition aus. Hier müssen Sie die Optionen „Daten anfügen (Insert)“ und „Vorhandene Datensätze ignorieren“ aktivieren. So prüft der SQLServer Adapter anhand des angegeben Primary Key ob der anliegende Datensatz schon existiert und führt nur einen INSERT aus falls nicht.

Hinweis: Über das Batch Modul können die beiden Definitionen automatisert nacheinander ausgehführt werden!

Der etwas schwierigere Weg ist über eine Definition. Hier müssen Sie in der Definition selbst prüfen ob der gerade anliegende CSV Satz in der Datenbank bereits vorhanden ist. Die Prüfung können Sie über den Lookup Heater oder aber den SQL Heater durchführen. Falls Sie das benötigen bitte die Zeitstempel Felder sowie die/den Primary Key etwas genauer beschreiben dann kann ich Ihnen hierfür ein kleines Beispiel erstellen.
Kategorie: SqlServer Adapter
07 Apr 2017 18:36
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Florian,

ich denke nicht, dass das ein Problem vom verwendeten String Replace Heater für den CSV Lookup ist. Im Anhang finden Sie ein Beispiel, wo die Arbeitsweise genau so funktioniert wie Sie es zuletzt beschrieben haben.

Nach Analyse Ihrer Definition denke ich es liegt am verwendeten IF-THEN-ELSE Heater für das Feld „PLZ_Flag“, siehe Screenshot.

Wenn Sie den IF-THEN-ELSE Heater mit nur einem Eingangsparameter verwenden haben Sie als Ausgang immer den Booleschen Wahrheitswert TRUE/WAHR oder FALSE/FALSCH.

z.B. ist im Feld eine 0 vorhanden erhalten Sie FALSCH, bei allen anderen Werten WAHR!

Diesen Wert verwenden Sie im .NET Script Heater um selbst irgendwelche SQL Statements zusammenzustellen.

Sie greifen den Wert im Skript über folgenden Zeile ab.

int PLZ_Flag = (int)InValues[0].GetInt();

und prüfen weiter unten im Skript auf 0, 1, 2 oder 3 und generieren dann unterschiedliche SQL Statements. Das Problem dabei ist, dass der so abgegriffene Wert nur 0 oder 1 haben kann! Ich denke es sollte reichen wenn Sie den betroffenen IF-THEN-ELSE Heater aus der Definition löschen und das Feld „PLZ_Flag“ direkt mit den anschließenden Heatern/Funktionen verbinden.



Dateianhang:

Dateiname: leere-eintraege.zip
Dateigröße:19 KB
Kategorie: Allgemein
26 Jan 2017 06:28
  • FlowHeater-Team
  • FlowHeater-Teams Avatar
Hallo Florian,

derzeit geht das nicht, da der definierte Filter für alle Adapter gilt. Das ist aber in Planung.

Mit dem .NET Script Heater können Sie das durchführen. Um SQL Statement von hier abschicken gibt es zwei Funktionen.
AdapterWrite.Execute("insert into ..", false);

Hier wird immer der erste Adapter der WRITE Seite verwendet.

Oder aber wenn mehrere Adapter auf der WRITE Seite vorhanden sind.
AdaptersWrite[0].Execute("insert into ..", false);
[0] = der erste Adapter, [1] = der zweite, …

Der zweite Parameter bedeutet, dass keine Rückgabe erwartet wird. Mit true können Sie sich zum Beispiel einen Wert auslesen und zurückgeben lassen (= Daten Lookup).

Wenn Sie anstelle AdaptersWrite, AdaptersRead verwenden gehen die SQL Statements an die Adapter der READ Seite.

Einziges Manko derzeit, die Parameter müssen Sie vorher auflösen!
String sql = String.Format("INSERT INTO 'tTabelle' (idColumn, telColumn) VALUE ({0}, '{1}')", Parameter["ID"].GetInt(), Parameter["sTel"].GetString());

  AdapterWrite.Execute(sql, false);
Kategorie: ODBC Adapter
1 - 15 von 61 Ergebnissen angezeigt.
Ladezeit der Seite: 1.544 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