Zum Hauptinhalt springen
Weil einfach - produktiver ist
Der Daten Spezialist

✅ Kinderleichte Datenintegration - Import / Export
✅ Keine Programmierung dank visueller Modellierung
✅ Einfaches ETL-Tool mit vielseitigen Möglichkeiten

Flowheater Chart

Suchergebnis (Gesucht wurde: sql lookup)

  • FlowHeater-Team
12 März 2026 07:28
FlowHeater-Team antwortete auf Verwendung des Lookup Heater
Hallo Herr Herbert,

ich vermute mal der Lookup Heater soll anhand einer IF-THEN-ELSE Bedingung nur ausgeführt werden, wenn ein bestimmtes Kriterium erfüllt ist, so kommen Sie auf 780x Lookup Heater?

Das Problem hier ist, der FlowHeater führt immer alle Heater/Funktionen 1x aus die eine Verbindung zur WRITE Seite haben oder aber durch einen anderen Heater (z.B. Set) gerufen werden und das unabhängig ob hier der „Wenn/Then“ bzw. „Dann/Else“ Fall zurückgegeben wird.

Dafür ist doch die Performance nicht schlecht 

Sie können das aber über den .NET Script Heater umsetzen. Wenn Sie hier im Skript die Bedingung einbauen, wird der Lookup bzw. das SQL auch nur ausgeführt, wenn die Bedingung zutrifft.
Code:
public object DoWork() {     object oRet = null;     string cmp = (string)InValues[0].GetString();     if (cmp.Contains("123"))     {         string sql = String.Format("select feldname from Ihre_Tabelle where keyfeld = '{0}'", cmp);         DatabaseAdapter db = (DatabaseAdapter)AdapterWrite;                 oRet = db.Execute(sql, true);     }          return oRet; }
 
  • FlowHeater-Team
10 März 2026 17:53
FlowHeater-Team antwortete auf Verwendung des Lookup Heater
Hallo Herr Herbert,

also wenn es sich nur um ein paar zehntausend Datensätze handelt würde ich pro Feld einen eigenen SQL Heater oder aber Lookup Heater verwenden. Oracle bzw. auch andere DBMS-Systeme können das gut skalieren, der Datensatz ist ja bereist eh schon selektiert bzw. im Cache und es muss nur eine andere Spalte bzw. Feld zurückgegeben werden. Natürlich muss hier immer pro Feld ein erneuter Connect zur Oracle Datenbank aufgebaut werden, was bei sehr vielen Daten sich dann schon aufsummiert.

Alternativ dazu könnte das über den  SQL Heater durchgeführt werden. Hier müssten Sie aber im SELECT die Felder selbst zu einem Feld zusammenführen, da der  SQL Heater nur eine Feld zurückgeben kann. Das ist dann gerade bei nicht Zeichenfolgen mit der Formatierung teilweise nicht ganz so einfach.

z.B. reine Textfelder über: select concat(feld1, ‘#’, feld2, ‘#’, feld3) from ihre_tabelle where pk = ‘$ID$’

Im Anschluss können Sie dann die Rückgabe mit dem String Split Heater und dem Trennzeichen ‚#‘ wieder auseinander splitten.
Sie werden die Daten über einen zusätzlichen Connect zur Oracle Datenbank geholt, sie sparen sich pro CSV-Zeile bei 3 Feldern 2 zusätzliche SQL-Abfragen.

Aus meiner Sicht ist der Kosten/Nutzen Faktor erst bei wirklich großen Datenmengen relevant, ansonsten würde ich immer einfach mehrere  SQL Heater oder aber  Lookup Heater verwenden.
 
  • Philip Herbert
10 März 2026 07:59
Philip Herbert antwortete auf Verwendung des Lookup Heater
vielen Dank, das funktioniert deutlich performanter und ist (mit entsprechendem Namen des Adapters) auch verständlicher

Wenn man mehrere Felder einer Tabelle aus dieser Tabelle benötigt, muss man für jedes Feld den Lookup oder SQL Heater verwenden, (Performace) oder kann man dieser Felder 
zusammen auslesen und dann trennen ? Was ist in so einem Fall Best-Practice.

Danke, Philip Herbert

 
  • Philip Herbert
09 März 2026 20:17
Philip Herbert antwortete auf Verwendung des Lookup Heater
Hallo Herr Stark,

ich bin aktuell wieder an diesem Thema dran.

Ist es immer noch so, dass man für einen Lookup den Adapter für jede Zeile auf der Write Seite neu ausführen muss und eine sql datei füllen muss ?
Ich habe den Eindruck, dass die Performance mindestens suboptimal ist. 

Ich hatte damals einfach einen Großteil der Orale Tabelle inMemory eingelesen und dann den lookup dagegen ausgeführt.
Um z.B. 120 Datensätze anzureichen mehrere Zehntausend Zeilen der letzten Jahre einzulesen (nur weil ein Datensatz aus der Zeit sein kann) stört mich irgendwie nach wie vor.

Danke, Philip Herbert
  • FlowHeater-Team
10 Nov. 2025 17:54 - 10 Nov. 2025 17:56
FlowHeater-Team antwortete auf Zusammenführen von mehreren Zeilen
Hallo Herr Mundt,

in Ihrem Screenshot lesen Sie auf der READ-Seite die InMemory Adapter Tabelle „hkv_swg“. Wenn Sie von hier lesen können Sie die Felder von der READ-Seite direkt mit der WRITE Seite verbinden. Der SQL Heater ist aus meiner Sicht an der Stelle überflüssig!

Der SELECT, den Sie im SQL Heater verwenden, ist so falsch. Sie können hier lediglich ein einzelnes Feld oder aber eine Aggregatsfunktion wie COUNT, SUM, etc. verwenden, so dass immer nur ein Feld zurückgegeben wird.

    z.B.  select count(*) from [hkv_swg]

Um Ihre Oracle Daten ebenfalls zu verwenden, können Sie diese einmal in die InMemory Adapter Tabellen mit einmischen oder aber per SQL Heater oder aber Lookup Heater in die Definition reinholen. Alternativ und etwas einfacher geht der Lookup auf InMemory Adapter Tabellen auch mit String Replace Heater . Für eine etwas genauere Beschreibung bräuchte ich etwas mehr Informationen was genau gemacht werden soll.

 
  • Monschau
27 Nov. 2024 08:17
Monschau antwortete auf Lockup Heater und SQL Lookup Heater
Hat sich erledigt, mit dem SQL-Heater hat es funktioniert.
  • Monschau
27 Nov. 2024 07:09
Monschau antwortete auf Lockup Heater und SQL Lookup Heater
Hallo Herr Stark,

ich verstehs immer noch nicht und ich bekomme es nicht hin. Immer wieder Lookup-Error. Der sqlstring ist richtig, den kann ich im Datenbankeditor so erfolgreich absetzen. Btw., SQL kann ich sehr gut.

Deshalb wäre es nett wenn jemand ein praktisches Beispiel mit den entsprechenden Daten hätte, z. b. mit einer Access oder SQlite-Datenbank.
  • FlowHeater-Team
25 Nov. 2024 09:28
FlowHeater-Team antwortete auf Lockup Heater und SQL Lookup Heater
Hallo Herr Monschau.

der Lookup Heater ist eine vereinfachte Version vom SQL Heater . Im Lookup Heater geben Sie lediglich die Tabelle, das gewünschte Feld und ggf. eine Einschränkung an was Sie abfragen möchten, hier sind so gut wie keine SQL Kenntnisse erforderlich. Wenn Sie z.B. in MS Access die VBA Funktion DLookup kennen, die funktioniert so ähnlich.

Mit dem SQL Heater können Sie beliebige SQL Statements absetzen, erfordert aber einiges an SQL Kenntnisse.

Wenn Sie auf der READ Seite eine CSV Datei sowie auf der WRITE Seite eine Datenbank haben wohin Sie importieren möchten und Sie benötigen noch weitere Felder für den Import die in dieser Datenbank in anderen Tabellen stehen, dann müssen Sie im SQL bzw. Lookup Heater die WRITE Seite angeben, so wird die Abfrage auf dieser Seite bzw. Datenbank ausgeführt. Wenn Sie in dem Fall die READ Seite auswählen wird es einen Fehler geben, da der TextFile Adapter keine direkten Lookups bzw. den SQL Heater nicht unterstützt.

 
  • Monschau
25 Nov. 2024 07:55
Lockup Heater und SQL Lookup Heater wurde erstellt von Monschau
Hallo,

ich stelle mich gerade ein wenig dumm an und verstehe die Erklärungen zu diesen beiden Adaptern nicht. Schon alleine "auf der Write-Seite oder auf der Read-Seite ausführen" ist zu hoch für mich.

Nehmen wir an ich habe auf der Readseite ein csv-file mit den Spalten Code und Name und auf der Write-Seite eine Datenbanktabelle ebenfals mit Code und Name und möchte das er in der Datenbanktabelle in allen Datensätzen, bei denen der Code mit dem auf der Writeseite übereinstimmt den Namen füllen, wie mass dann die Definition aussehen?

Lieben Dank im Voraus für die Antworten!
  • frickeflowheater
19 Feb. 2024 14:26
Hallo Herr Stark, 

ich nutze in der Tat den SQL-Heater, das lässt sich aber vermeiden, da dieser lediglich für Logging-Zwecke genutzt wurde. Nach Entfernen des Heaters stoße ich aber auf ein neues Problem. 
Der Server-Manager stürzt leider mitten im Prozess ab und wirft "System.OutOfMemoryException." (entnommen aus der Log-Datei).

Die Datenmenge ist definitiv nicht unerheblich mit ca. 10 Mio. Datensätzen. Mich irritiert der Absturz mit dieser Exception allerdings, da ich in anderen Prozessen bereits in einem vorbereitenden Prozessschritt diese Datenmenge in den In-Memory-Adapter eingelesen habe, um hieraus via Lookup-Heater Informationen in eine Definition einfließen zu lassen. Direkt im Read-Adapter war das aufgrund unterschiedlicher Quell-DBs nicht möglich. 

Gibt es noch andere Auslöser für diese Exception, die ich prüfen kann? Ehe ich die Definition nun verändere, das Problem aber an ganz anderer Stelle verursacht wird, hoffe ich auf einen Tipp von Ihrer Seite. Zumindest nach meiner bisherigen Erfahrung ist Flowheater eigentlich in der Lage, diese Datenmengen zu verarbeiten. 

Danke und Gruß
Niko Stein 
  • FlowHeater-Team
17 Feb. 2024 15:35 - 17 Feb. 2024 15:36
Hallo Herr Stein,

bei der Analyse bin ich auf eine evtl. Erklärung gekommen. Verwenden Sie in der Definition den SQL Heater , Lookup Heater oder aber .NET Script Heater um damit weitere Werte aus evtl. anderen Tabellen von der READ Seite der Oracle Datenbank abzufragen?

Dann ist das Problem, dass der Oracle Adapter in diesem Fall eine Datenbank Transaction über die Gesamte Laufzeit aufspannt. Leider kann das mit der aktuellen Version auf der READ Seite nicht geändert werden.

In der aktuellen Beta Version wurde das Transaktionsverhalten dahingehend geändert, dass das Datenbank Transaktionsverhalten auch auf der READ Seite geändert werden kann.

Die aktuelle Beta Version können Sie über folgenden Link herunterladen: Download Beta Version

Hier bitte mal folgenden Einstellungen, siehe Screenshot unten, verwenden. Falls Sie nur lesend zugreifen also keine Updates, etc. auf der READ Seite verwenden können Sie die Transaktionen auch komplett deaktivieren.

 
 
  • FlowHeater-Team
07 Mai 2023 10:36
FlowHeater-Team antwortete auf Lookup Heater bedingt ausführen
Hallo Herr Herbert,

hier mal 2 C# Skripte wie das mit dem .NET Script Heater durchgeführt werden kann. Der erste Parameter wird geprüft und nur wenn dieser mit „WAHR“ ausgewertet werden kann wird der Lookup bzw. das SQL abgesetzt.

SQL per Skript Ausführen
Code:
public object DoWork() {     bool execute = (bool)InValues[0].GetBool();     int key1 = (int)InValues[1].GetInt();     string key2 = (string)InValues[2].GetString();     // nur ausführen wenn der erste Eingangsparameter "WAHR" ist     if (execute)         {         // SQL zusammenbauen         string sql = String.Format("select value from IhreTabelle where Key1 = {0} and Key2 = '{1}' order by [ID] desc", key1.ToString(), key2);         // 0 = erster Adapter im aktuellen Step auf der Write Seite!         return AdaptersWrite[0].Execute(sql, true);             }          return "keine Ausführung!"; }


Daten Lookup per Skript ausführen
Code:
public object DoWork() {     bool execute = (bool)InValues[0].GetBool();     int key = (int)InValues[1].GetInt();     // nur ausführen wenn der erste Eingangsparameter "WAHR" ist     if (execute)         {         string where = String.Format("key = {0}", key.ToString());         string orderby = "ID desc";         // 0 = erster Adapter im aktuellen Step auf der Write Seite!         return AdaptersWrite[0].Lookup("Tabelle", "Feldname", where, orderby);     }     return "keine Ausführung!"; }
 
  • Philip Herbert
06 Mai 2023 10:01
Philip Herbert antwortete auf Lookup Heater bedingt ausführen
Es wäre schon wirklich gut, wenn man einen Lookup oder SQL Heater bedingt ausführen könnte (notfalls irgendwie per .NET Script).
Gerade bei der Abfrage externen Datenquellen kostet das sonst viel Performance.

Die beschriebene Lösung funktioniert zwar, generiert aber nun für jede gelesene Zeile weitere DB Abfragen.

Danke, Philip Herbert
 
  • Philip Herbert
01 Mai 2023 11:48
SQL Heater und InMemory wurde erstellt von Philip Herbert
Gibt es ein Beispiel für den SQL-Heater im Zusammenhang mit dem InMemoryAdapter und mehreren Tabellen ?

Verwende ich den Lookup-Heater auf eine InMemory Tabelle, klappt das.
Versuche ich z,B. eine SELECT Datum FROM Tabelle WHERE RechnNr='4711' bekomme ich grundsätzlich einen SQL-Fehler.

Die Tabelle wurde in einem vorherigen Verarbeitungsschritt gefüllt.

Was mache ich falsch ?

Danke, Philip Herbert
 
  • FlowHeater-Team
03 Jan. 2023 07:33
FlowHeater-Team antwortete auf Verwendung des Lookup Heater
bitte setzen Sie auf dem Lookup Heater mal einen Haltepunkt. Hierzu einfach mit der rechten Maustaste das Kontextmenü öffnen und „Haltepunkt“ auswählen. Der Lookup Heater wird nun mit einem roten Kreis dargestellt. Wenn Sie die Definition nun im Testmodus ausführen hält die Verarbeitung hier an und Sie können sich die Ein- und Ausgehenden Daten ansehen. Ich vermute, dass hier ein Problem mit der Formatierung vorliegt?

Alternativ könnten Sie auch den SQL Heater verwenden. Hier können Sie den SQL Befehl selbst aufbauen.

 
1 - 15 von 79 Ergebnissen angezeigt.
Ladezeit der Seite: 0.259 Sekunden
FlowHeater Logo
FlowHeater - Der Daten Spezialist

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

Rechtliches
Support & Kontakt
Kontaktinformation

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