2016-07-13 22 views
0

Ich versuche, Daten aus Oracle-Datenbank über Nifi abzurufen. In der Zeichenfläche habe ich den "GenerateFlowFile" -Prozessor mit einer Dateigröße von 0 KB vorgesehen, der alle 5 Minuten ausgeführt wird. Dies ist nur um den "ExecuteSQL" -Prozessor bei Erfolg auszulösen. Für "ExecuteSQL" habe ich den DB Connection Pooling Service als DBCPConnectionPool definiert. Ich gebe die SQL-Abfrage "SELECT * FROM SOMETABLE" ein. Meine DBCPConnectionPool-Konfiguration lautet wie folgt:ExecuteSQL tut nichts

Wenn ich versuchte zu laufen, passiert nichts. Das rote Kästchen wird grün und in der oberen rechten Ecke des "ExecuteSQL" -Prozessors befindet sich eine Zahl 1. Aber nichts passiert. Dann, wenn ich damit aufhöre, ist Active Threads immer noch 1.
Kann ich mich bitte beraten, weil ich neu bin? Vielen Dank.

+0

Haben Sie die NiFi-Protokolldateien überprüft? –

+0

Welche Version von NiFi? und wie groß ist der Tisch, aus dem du auswählst? Es scheint, als ob es an der Verbindung hängt oder sehr lange dauert. Wie lange haben Sie gewartet, um zu sehen, ob es abgeschlossen ist? –

+0

Sorry, ich wählte aus einem sehr großen Tisch, also dachte ich, nichts passiert. Ich habe versucht, von einer kleinen Tabelle abzufragen, und es funktioniert, aber die Sache ist, es fragt die gleiche Reihe von Aufzeichnungen weiter ab. Wie kann ich stoppen, um abzufragen, ob es nur die gleichen Sätze von Datensätzen sind? – iPhoneJavaDev

Antwort

1

Da die ursprüngliche Post beantwortet wird, werde ich auf die Frage in seinem Kommentar antworten:

Sie können den GenerateFlowFile Prozessor eingestellt alle 30 Sekunden oder so, dann starten und sofort stoppen, um sie auszuführen. Dies führt dazu, dass ExecuteSQL genau einmal ausgeführt wird und alle Zeilen abruft.

Alternativ (in NiFi 0.6.0+) können Sie den Prozessor QueryDbTable verwenden, der alle Zeilen beim ersten Mal abruft, aber dann (basierend auf einer Höchstwertspalte wie einem zunehmenden Primärschlüssel) Zeilen nur als solche zurückgibt sind hinzugefügt.