Apache nifi NiFi 1.10 PutSQL错误:查询必须类似于INSERT

Apache nifi NiFi 1.10 PutSQL错误:查询必须类似于INSERT,apache-nifi,Apache Nifi,我正在尝试执行SQL命令“Truncate Table”。 我看到的所有帖子都建议使用PutSQL来实现这一点 我已收到错误消息: ERROR PutSQL[id=a154204d-016e-1000-d9c9-d0d79519e70e] Failed to update database for [StandardFlowFileRecord[uuid=6c92c3bc-a219-4017-9641-dc4d21ab061a,claim=StandardContentClaim [resour

我正在尝试执行SQL命令“Truncate Table”。 我看到的所有帖子都建议使用PutSQL来实现这一点

我已收到错误消息:

ERROR
PutSQL[id=a154204d-016e-1000-d9c9-d0d79519e70e] Failed to update database for
[StandardFlowFileRecord[uuid=6c92c3bc-a219-4017-9641-dc4d21ab061a,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[id=1574662524581-1, container=default, section=1], offset=3900, length=35],offset=0,name=6c92c3bc-a219-4017-9641-dc4d21ab061a,size=35]] 
due to Query must be like 'INSERT INTO [db.]table [(c1, c2, c3)] VALUES (?, ?, ?)'. 
Got: truncate table SBST.geographicalcat; 
routing to failure: java.sql.SQLSyntaxErrorException: Query must be like 'INSERT INTO [db.]table [(c1, c2, c3)] VALUES (?, ?, ?)'. 
Got: truncate table SBST.geographicalcat
我使用NiFi 1.10处理器的所有默认参数。 我尝试过将truncate查询作为SQL语句参数中的常量,或者将此查询设置为空,并从传入流文件中执行SQL提交

数据库是Clickhouse,使用最后一个JDBC。 truncate命令在ExecuteSQL处理器的前SQL中工作。所以NiFi和JDBC应该能够运行它

NiFi文档说明PutSQL仅用于插入或更新。 看起来PutSQL只允许插入/更新,或者有一个参数需要更改吗?
有其他解决方案吗?

这可能是Clickhouse的错误,这似乎是一个错误。另外,您对批量大小的设置是什么?如果>1,请尝试将其设置为1。另外,
支持零散交易的价值是什么?这应该是
false
以及
获取生成的密钥

如果目标数据库是Clickhouse,您可以使用http接口而不是JDBC

NiFi处理器调用EHTTP文件:

使用POST方法修改数据(GET仅用于选择)

Clickhouse http接口文档:


目前,我已经找到了解决办法,但我需要尝试一下Eduard Golubov的建议,该建议也应该有效

从GetFile中,第一个成功分支转到执行SQL,执行SQL有一个执行截断的预查询和一个执行简单选择查询的查询(这里是被截断表的select count(),该查询应返回0并可用作检查),然后转到通知,通知截断已完成

从GetFile,第二个成功分支转到Wait(等待截断完成),然后移动到PutDatabaseRecord(之前使用updateatibute设置schema.name)



试试ExecuteSQL Processor银行,我也需要试试