首页 文章

Apache NiFi:转换JSONtoSQL(Oracle数据库)

提问于
浏览
5

我想通过使用ConvertJSONtoSQL处理器将我的JSON字符串转换为SQL语句 . 示例: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"}

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
);

用于MySQL数据库的配置:

数据库连接url:jdbc:mysql:// localhost:3306 / testnifi

数据库驱动程序类名:com.mysql.jdbc.Driver

我使用(DBCP连接池)JDBC url,用户名和密码成功连接到MySQL . ConvertJSONtoSQL处理器在那里成功运行,我得到有效的sql insert语句作为输出 . 但是,当我尝试使用Oracle数据库时,我正在尝试

ERROR [定时器驱动的进程线程-6] o.a.n.p.standard.ConvertJSONToSQL java.sql.SQLException:Stream已经关闭

我对Oracle数据库连接的配置:

ConvertJSONtoSQL processor config

DBCP config

我搜索了谷歌中的错误但我发现在数据库表中使用长数据类型但我没有使用它时会发生此错误 . 我浏览了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 [计时器驱动的进程线程-6] oanpstandard.ConvertJSONToSQL java.sql.SQLException:流已经在oracle.jdbc.driver.LongAccessor.getBytesInternal(LongAccessor.java)关闭:oracle.jdbc.driver的oracle.jdbc.driver.LongAccessor.getBytes(LongAccessor.java:126)〜[ojdbc6.jar:11.2.0.1.0]的〜(156)〜[ojdbc6.jar:11.2.0.1.0] .LongAccessor.getString(LongAccessor.java:201)~ [ojdbc6.jar:11.2.0.1.0] at oracle.jdbc.driver.T4CLongAccessor.getString(T4CLongAccessor.java:427)〜[ojdbc6.jar:11.2.0.1 . 0] at oracle.jdbc.driver.OracleResultSetImpl.getString(OracleResultSetImpl.java:1251)〜[ojdbc6.jar:11.2.0.1.0] at oracle.jdbc.driver.OracleResultSet.getString(OracleResultSet.java:494)〜[ ogdbc6.jar:11.2.0.1.0] atg.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263)〜[na:na] at org.apache.nifi.processors.standard.ConvertJSONToSQL $ ColumnDescription . 来自(ConvertJSONToSQL.java:677)〜[nifi-standard-processors-0.7.0.jar:0.7.0] org.apac在org.apache.nifi.processors.standors.ConvertJSONToSQL上的he.nifi.processors.standard.ConvertJSONToSQL $ TableSchema.from(ConvertJSONToSQL.java:621)~ [nifi-standard-processors-0.7.0.jar:0.7.0] oron.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27).onTrigger -0.7.0.jar:0.7.0] org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1054)[nifi-framework-core-0.7.0.jar:0.7.0] at org . apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call(ContinuallyRunProcessorTask.java:136)[nifi-framework-core-0.7.0.jar:0.7.0] atg.apache.nifi.controller.tasks.ContinuallyRunProcessorTask.call( ContinuallyRunProcessorTask.java:47)[nifi-framework-core-0.7.0.jar:0.7.0] org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent $ 1.run(TimerDrivenSchedulingAgent.java:127)[nifi-framework- core.0.7.0.jar:0.7.0] at java.util.concurrent.Executors $ RunnableAdapte r.call(未知来源)[na:1.7.0_40] at java.util.concurrent.FutureTask.runAndReset(Unknown Source)[na:1.7.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.access $ 301(Unknown来源)[na:1.7.0_40] at java.util.concurrent.ScheduledThreadPoolExecutor $ ScheduledFutureTask.run(Unknown Source)[na:1.7.0_40] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)[na:1.7 .0_40] at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)[na:1.7.0_40] at java.lang.Thread.run(Unknown Source)[na:1.7.0_40

1 回答

相关问题