【发布时间】:2018-12-04 09:04:50
【问题描述】:
我目前正在使用 SQL Server 中的一个函数来获取某个列的最大值。我需要这个值来生成特定数量的虚拟文件以插入稍后创建的流文件。 有没有办法通过 nifi 处理器调用这个函数?
通过使用 ExecuteSQL,当使用 select ab.functionname()(ab 是数据库的登录名)时,我总是收到错误,例如无法执行 SQL 选择查询或找不到列“ab”
在 SQL Server 中,我可以只使用 select ab.functionname() 并获得所需的结果。
如果没有可能调用此函数的方法,是否有另一种方法来创建#flowfiles dummyfiles 以在数据库中为它们保留这个位置,以便其他人无法插入或使用此 ID(不是自动增量,因为它是不可能)在处理流文件时?
我尝试使用 $flowfile.count 和 Counterprocessor,但这并没有解决问题。 它应该看起来像:INSERT INTO table (id,nr) values (max(id)+1,anynumber) for each flowfiles,不幸的是 ExecuteSQL 无法做到这一点。
【问题讨论】:
-
在 SQL 中
select ab.functionname()ab被视为您的表的别名。 -
我想出了如何通过使用 SELECT TOP1 id from table order by id desc 来使用 nifiprocessor 获取 maxid。我仍然不知道如何在流文件中添加正确的 id 并在处理它们时防止插入。
标签: sql sql-server apache-nifi