Apache NiFi: конвертировать JSONtoSQL (база данных Oracle)

Я хотел преобразовать строку JSON в инструкцию SQL с помощью процессора ConvertJSONtoSQL. Пример: строка JSON –

{"cpuwait":"0.0","servernamee":"mywindows","cpusys":"5.3","cpuidle":"77.6","datee":"29-SEP-2016","timee":"00:01:33","cpucpuno":"CPU01","cpuuser":"17.1"} 

Структура таблицы в оракуле 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 ); 

Конфигурация, используемая для базы данных MySQL:

URL-адрес подключения к базе данных: jdbc: mysql: // localhost: 3306 / testnifi

Имя драйвера базы данных: com.mysql.jdbc.Driver

Я был успешно подключен к MySQL, используя (пул соединений DBCP) JDBC url, имя пользователя и пароль. Процессор ConvertJSONtoSQL успешно работал там, и я получаю действительную инструкцию sql insert в качестве вывода. Но когда я делал то же самое с Oracle Database, я получаю

ERROR [Timer-Driven Process Thread-6] oanpstandard.ConvertJSONToSQL java.sql.SQLException: поток уже закрыт

Моя конфигурация для подключения Oracle db:

Конфигурация процессора ConvertJSONtoSQL

Конфигурация DBCP

Я искал ошибку в google, но обнаружил, что эта ошибка возникнет, когда в таблицах базы данных будут использоваться Long Datatypes, но я их не использую. Я прошел через исходный код процессора ConvertJSONtoSQL (после трассировки стека) и попытался реализовать то же самое в eclipse, где я не получаю никаких ошибок, я могу подключиться к базе данных и делать запросы.

Так есть ли какая-то ошибка в моей конфигурации?

Версия Nifi – 0.7.0 / 1.0 (я получаю ту же ошибку в обоих)

java-версия – java8

Версия Oracle DB – Oracle Database 11g Express Edition

Полная трассировка стека:

2016-10-19 07: 10: 06,557 ERROR [Timer-Driven Process Thread-6] oanpstandard.ConvertJSONToSQL java.sql.SQLException: поток уже закрыт в oracle.jdbc.driver.LongAccessor.getBytesInternal (LongAccessor.java:156 ) ~ [ojdbc6.jar: 11.2.0.1.0] в oracle.jdbc.driver.LongAccessor.getBytes (LongAccessor.java:126) ~ [ojdbc6.jar: 11.2.0.1.0] в oracle.jdbc.driver.LongAccessor .getString (LongAccessor.java:201) ~ [ojdbc6.jar: 11.2.0.1.0] в oracle.jdbc.driver.T4CLongAccessor.getString (T4CLongAccessor.java:427) ~ [ojdbc6.jar: 11.2.0.1.0] в oracle.jdbc.driver.OracleResultSetImpl.getString (OracleResultSetImpl.java:1251) ~ [ojdbc6.jar: 11.2.0.1.0] в 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) ~ [na: na] at org.apache.nifi.processors.standard.ConvertJSONToSQL $ ColumnDescription.from ( ConvertJSONToSQL.java:677) ~ [nifi-standard-processor-0.7.0.jar: 0.7.0] на org.apache.nif i.processors.standard.ConvertJSONToSQL $ TableSchema.from (ConvertJSONToSQL.java:621) ~ [nifi-standard-processor-0.7.0.jar: 0.7.0] на org.apache.nifi.processors.standard.ConvertJSONToSQL.onTrigger (ConvertJSONToSQL.java:267) ~ [nifi-standard-processor-0.7.0.jar: 0.7.0] в org.apache.nifi.processor.AbstractProcessor.onTrigger (AbstractProcessor.java:27) [nifi-api-0.7 .0.jar: 0.7.0] at org.apache.nifi.controller.StandardProcessorNode.onTrigger (StandardProcessorNode.java:1054) [nifi-framework-core-0.7.0.jar: 0.7.0] в org.apache. nifi.controller.tasks.ContinuallyRunProcessorTask.call (ContinuallyRunProcessorTask.java:136) [nifi-framework-core-0.7.0.jar: 0.7.0] в org.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call (ContinuallyRunProcessorTask. java: 47) [nifi-framework-core-0.7.0.jar: 0.7.0] at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run (TimerDrivenSchedulingAgent.java:127) [nifi-framework-core- 0.7.0.jar: 0.7.0] на java.util.concurrent.Executors $ RunnableAdapter.call (Неизвестный источник) [na: 1.7.0_40] в java.util.concurrent.FutureTask.runAndReset (Неизвестный источник) [na: 1.7.0_40] в java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 301 (Неизвестный источник) [ na: 1.7.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run (Неизвестный источник) [na: 1.7.0_40] в java.util.concurrent.ThreadPoolExecutor.runWorker (Неизвестный источник) [na: 1.7.0_40] в java.util.concurrent.ThreadPoolExecutor $ Worker.run (Неизвестный источник) [na: 1.7.0_40] на java.lang.Thread.run (Неизвестный источник) [na: 1.7.0_40

Кажется, ошибка в драйвере Oracle. Видеть:

  1. https://blog.jooq.org/2015/12/30/oracle-long-and-long-raw-causing-stream-has-already-been-closed-exception/
    1. Hibernate custom type to avoid 'Caused by: java.sql.SQLException: поток уже закрыт'

Пункт 2 дает мне обходной путь. В основном добавьте в bootstrap.conf следующий аргумент:

 java.arg.xx=-Doracle.jdbc.useFetchSizeWithLongColumn=true 
  • Поставщик Oracle OLE DB не включен в SSIS
  • Существует ли автоматический способ создания сценария отката при вставке данных с помощью LINQ2SQL?
  • Дизайн базы данных для создания таблиц на лету
  • Является ли это ошибкой в ​​Oracle при подключении таблицы к представлению, которое зависит от таблицы
  • Выделение синтаксиса в браузере Oracle аналогично SQL Server Management Studio
  • Имеет ли Oracle концепцию фильтрованного индекса?
  • Как конвертировать SQL-сервер в Oracle?
  • Есть ли у Oracle что-то вроде изменения сбора данных в SQL Server 2008?
  • Подход для .NET асинхронного подключения к Oracle
  • Oracle Insert Into NVarchar2 (4000) не позволяет использовать 4000 символов?
  • атомное сравнение и своп в базе данных
  • Давайте будем гением компьютера.