可能是由于ExecuteSQL处理器的某些特性,导致PostgreSQL的命令在事务未结束之前被忽略。解决此问题的一种方法是使用ExecuteStreamCommand或JDBC Lookup处理器执行查询操作。
以下是使用ExecuteStreamCommand处理器执行查询操作的代码示例:
将ExecuteStreamCommand处理器添加到您的Nifi流程中。
在ExecuteStreamCommand配置中,为Command属性指定以下命令:
/bin/bash -c 'psql -h -p -U -d -c ""'
将参数添加到ExecuteStreamCommand处理器配置中,并指定参数值。
将查询结果传递到下游处理器。
您可以使用JDBC Lookup处理器来查询表,并将结果作为流文件属性返回。
以下是使用JDBC Lookup处理器查询表的代码示例:
将JDBC Lookup处理器添加到您的Nifi流程中。
在JDBC Lookup配置中,为DBCPConnectionPool属性指定PostgreSQL数据库的连接池。
在JDBC Lookup配置中,为Table Name属性指定要查询的数据库表。
将要查询的列添加到JDBC Lookup配置中。
将结果传递到下游处理器。
请注意,您可以基于需要调整查询。例如,您可以指定WHERE条件或使用ORDER BY排序结果。
希望这有助于解决这个问题。