当前位置: 首页 > 知识库问答 >
问题:

在Oracle数据库中使用Join查询Apache NiFi“executesQL”不起作用

姚航
2023-03-14

我尝试通过一个非常简单的SQL查询来检索Oracle数据库中两个表的联接内容:

SELECT OWNER.CONTENT.ID, OWNER.CONTENT.TITLE, OWNER.BODYCONTENT.BODY
FROM OWNER.CONTENT, OWNER.BODYCONTENT
WHERE OWNER.CONTENT.ID = OWNER.BODYCONTENT.ID 
AND OWNER.CONTENT.ID < 7

查询使用Oracle SQL Developer运行。

我正在使用NIFI中的OJDBC7.jar驱动程序。不包含联接的更简单的SQL查询使用“executesQL”,例如。g.

SELECT OWNER.CONTENT.ID, OWNER.CONTENT.TITLE
FROM OWNER.CONTENT
WHERE OWNER.CONTENT.ID < 7

我还尝试了其他SQL语句(例如,INNER JOIN)。查询在使用Oracle SQL Developer时按预期工作,但在NIFI中则不然。有人能帮帮我吗?

NIFI中的错误消息

2016-05-03 11:30:02,413错误[定时器驱动的进程线程-6]o.a.nifi.processors.standard.executesql org.apache.nifi.processor.exception.processException:java.sqlfeaturenotsupportedException:org.apache.nifi.processors.standard.executesql$1.Process(executesql.java:160)~[nifi-standard-processors-0.6.1.jar:0.6.1]在ors.standard.executesql.ontrigger(executesql.java:152)~[nifi-standard-processors-0.6.1.jar:0.6.1]在org.apache.nifi.processor.abstractProcessor.ontrigger(abstractProcessor.java:27)[nifi-api-0.6.1.jar:0.6.1]在org.apache.nifi.controller.standardProcessornode.ontrigger(136)[nifi-framework-core-0.6.1.jar:0.6.1]位于org.apache.nifi.controller。tasks.continuallyrunprocessortask.call(continuallyrunprocessortask.java:47)[nifi-framework-core-0.6.1.jar:0.6.1]在org.apache.nifi.controller.scheduling.timerdrivenschedulingagent$1.run(timerdrivenschedulingagent.java:123)[nifi-framework-core-0.6.1.jar:0.6.1]在java.util.concurrent.executors$runnableadapter.call)[NA:1.7.0_60]在java.util.concurrent.scheduledThreadPoolExecutor$scheduledFutureTask.access$301(scheduledThreadPoolExecutor.java:178)[NA:1.7.0_60]在java.util.concurrent.scheduledThreadPoolExecutor$scheduledFutureTask.run(scheduledThreadPoolExecutor.java:293)[NA:1.7.0_60]在java.util.concurrent.threadPoolExecutor.run(15)[NA:1.7.0_60]位于java.lang.thread.run(thread.java:745)[NA:1.7.0_60]由:java.sql.sqlfeaturenotsupportedexception:Un在oracle.jdbc.driver.clobaccessor.getBytes(clobaccessor.java:534)~[na:na]在oracle.jdbc.driver.generatedStatement.getBytes(generatedStatement.java:151)~[na:na]在oracle.jdbc.driver.generatedScrollableresultset.getBytes(generatedScrollableresultset.java:326)~[na:na]在TES(DelegatingResultSet.java:241)~[NA:NA]在org.apache.nifi.processors.standard.util.jdbccommon.converttoAvrostream(jdbccommon.java:105)~[nifi-standard-processors-0.6.1.jar:0.6.1]在org.apache.nifi.processors.standard.util.jdbccommon.converttoAvrostream 0.6.1.jar:0.6.1]...14个公共框架省略

共有1个答案

岳刚洁
2023-03-14

看起来您的一个返回列是BINARY、VARBINARY、LONGVARBINARY、ARRAY、BLOB或CLOB,当NiFi获取该列的值时,它调用ResultSet getBytes(i),并在Oracle驱动程序中调用一个方法,该方法会引发不受支持的异常。

我创建了这个JIRA:https://issues.apache.org/jira/browse/nifi-1841

不完全确定解决方案是什么,因为我们必须依赖JDBC接口,如果特定的数据库驱动程序不支持我们依赖的某些东西,那么我们只能做这么多。

 类似资料:
  • 我尝试使用pg_dump命令导出PostgreSQL数据库(数据库名ari_company): 然后我得到了这个错误: 但当我运行默认数据库(postgres)时,它会工作并转储。sql被创建。使用命令

  • 问题内容: 我正在使用嵌套集模型在iPhone上的本地SQLite数据库中存储较大的数据层次结构。我从他们的网站上阅读了MySQL技术文章,了解如何执行此操作,但是他们建议的查询(以及我需要的查询)之一似乎不适用于SQLite,并且我不确定如何解决它。 SQLite报告不是列,我认为这是因为其子查询实现不完整。有人对如何解决此限制有任何想法吗? 查询的目的是获取给定父节点的所有直接子代。 问题答案

  • 我试图通过使用Spring Data中的注释,将排序与集成在联接字段上。 有人建议将添加到参数中,以便在某种程度上与分页(spring data jpa@query和pagable)相对应 我已经学习了Baeldung的教程,但这不包括联接 Spring-Data FETCH JOIN与分页不起作用也建议使用,但我更喜欢使用,而不是. 我将在下面留下一些代码示例。如果我遗漏了一些重要的东西,请随时

  • 问题内容: 我正在尝试使用Hibernate 3和Oracle 10编写此查询。 它正在这样创建SQL- 当显然有完美的括号时,我会收到所有这些古怪的错误,例如“缺少正确的括号”。 甲骨文为何为此大吃一惊?有没有更好的方法来编写我的HQL查询? 问题答案: 不是吗? Hibernate会将其翻译为适当的方言。 我没有找到真正的“ Hibernate将其翻译成该文档”参考文档,但该表达式通常可以在H

  • 问题内容: 我有一个响应迅速的网页。它利用媒体查询。 但是在iframe中加载的同一页面无法正常工作。 例如,考虑到我的网页,当屏幕宽度小于640px时,我将背景色设置为红色。 因此,当我在新标签页中加载该窗口并使浏览器宽度小于640px时,背景颜色变为红色。 但是,在以320 * 480尺寸的iframe加载时,同一窗口没有红色的背景色。 如何使媒体查询在iframe中工作? 问题答案: 以这种

  • 问题内容: 我正在尝试从名为user_enrole的表中删除所有记录。 我认为查询的语法没有错,但这给了我错误提示 #1064-您的SQL语法有误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’* FROM user_enrole’附近使用正确的语法 我已经仔细检查了我的语法,但我无法找出问题出在哪里,请有人指出。 是由于该表与使用表之间的关系而发生的还是什么? 问题答案: 您无需在删