Chciałem przekonwertować ciąg znaków JSON na instrukcję SQL za pomocą procesora ConvertJSONtoSQL. przykład: JSON ciąg - strukturaApache NiFi: Konwertuj JSONtoSQL (baza danych Oracle)
{"cpuwait":"0.0","servernamee":"mywindows","cpusys":"5.3","cpuidle":"77.6","datee":"29-SEP-2016","timee":"00:01:33","cpucpuno":"CPU01","cpuuser":"17.1"}
tabeli w Oracle DB -
CREATE TABLE cpu (
datee varchar2(15) DEFAULT NULL,
timee varchar2(10) DEFAULT NULL,
servernamee varchar2(20) DEFAULT NULL,
cpucpuno varchar2(4) DEFAULT NULL,
cpuuser varchar2(5) DEFAULT NULL,
cpusys varchar2(5) DEFAULT NULL,
cpuwait varchar2(5) DEFAULT NULL,
cpuidle varchar2(5) DEFAULT NULL
);
Konfiguracja wykorzystywane do bazy danych MySQL:
Database połączenie URL: jdbc: mysql: // localhost: 3306/testnifi
Database Driver classname: com.mysql.jdbc.Driver
Udało mi się połączyć z MySQL przy użyciu (pula połączeń DBCP) adresu URL JDBC, nazwy użytkownika i hasła. Procesor ConvertJSONtoSQL pomyślnie tam pracował i otrzymuję poprawne polecenie wstawienia sql jako wyjście. Ale kiedy próbował to samo z Oracle Database dostaję
ERROR [Prog-Driven Process wątku-6] oanpstandard.ConvertJSONToSQL java.sql.SQLException: Stream został już zamknięty
Moja konfiguracja połączenia Oracle dB:
Szukałem błędu w google, ale stwierdziłem, że ten błąd wystąpi, gdy w tabelach bazy danych użyto długich typów danych, ale ich nie używam. Przeszedłem przez kod źródłowy procesora ConvertJSONtoSQL (po ślad stosu) i próbowałem zaimplementować to samo w eclipse, gdzie nie dostaję żadnego błędu, mogę połączyć się z bazą danych i tworzyć zapytania.
Czy jest jakiś błąd w mojej konfiguracji?
Nifi wersja - 0.7.0/1.0 (Dostaję ten sam błąd w obu) wersję
java - java8
wersjaOracle DB - Oracle Database 11g Express Edition
Kompletna Ślad stosu :
2016-10-19 07: 10: 06557 błędów [timer regulowanego procesu gwintowania 6] oanpstandard.ConvertJSONToSQL java.sql.SQLException: strumień został już szczelne osed w oracle.jdbc.driver.LongAccessor.getBytesInternal (LongAccessor.java:156) ~ [ojdbc6.jar: 11.2.0.1.0] w oracle.jdbc.driver.LongAccessor.getBytes (LongAccessor.java:126) ~ [ojdbc6.jar: 11.2.0.1.0] na oracle.jdbc.driver.LongAccessor.getString (LongAccessor.java:201) ~ [ojdbc6.jar: 11.2.0.1.0] na oracle.jdbc.driver.T4CLongAccessor .getString (T4CLongAccessor.java:427) ~ [ojdbc6.jar: 11.2.0.1.0] na oracle.jdbc.driver.OracleResultSetImpl.getString (OracleResultSetImpl.java:1251) ~ [ojdbc6.jar: 11.2.0.1.0 ] na oracle.jdbc.driver.OracleResultSet.getString (OracleResultSet.java:494) ~ [ojdbc6.jar: 11.2.0.1.0] at org.apache.commons.dbcp.DelegatingResultSet.GetString (DelegatingResultSet.java:263) ~ [nd nd] na org.apache.nifi.processors.standard.ConvertJSONToSQL $ ColumnDescription.from (ConvertJSONToSQL.java:677) ~ [Save-Standard-0.7.0-procesorów. jar: 0.7.0] na org.apache.nifi.processors.standard.ConvertJSONToSQL $ TableSchema.from (ConvertJSONToSQL.java:621) ~ [Save-Standard-procesory 0.7.0.jar: 0.7.0] przy org.apache.nifi.processors.standard.ConvertJSONToSQL.onTrigger (ConvertJSONToSQL.java:267) ~ [składowania standardowe procesory-0.7.0.jar: 0.7.0] w org.apache.nifi.processor.AbstractProcessor. onTrigger (AbstractProcessor.java:27) [API składowania 0.7.0.jar: 0.7.0] w org.apache.nifi.controller.StandardProcessorNode.onTrigger (StandardProcessorNode.java:1054) [składowania Framework wkładka skutecznie 0.7.0.jar: 0.7.0] w org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call (ContinuallyRunP rocessorTask.java:136) [składowania ramowej-core-0.7.0.jar: 0.7.0] w org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call (ContinuallyRunProcessorTask.java:47) [składowania framework- rdzeń-0.7.0.jar: 0.7.0] na org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run (TimerDrivenSchedulingAgent.java:127) [save-framework-core-0.7.0.jar: 0.7. 0] na java.util.concurrent.Executors $ RunnableAdapter.call (Unknown Source) [na 1.7.0_40] na java.util.concurrent.FutureTask.runAndReset (Unknown Source)] [na 1.7.0_40 w java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 301 (Unknown Source) [na 1.7.0_40] na java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (Unknown Source) [na 1.7.0_40] w Javie .util.concurrent.ThreadPoolExecuto r.runWorker (Unknown Source) [na 1.7.0_40] na java.util.concurrent.ThreadPoolExecutor $ Worker.run (Unknown Source) [Na 1.7.0_40] na java.lang.Thread.run (nieznanego źródła) [na 1.7.0_40
Podaj procesora obieg –