NiFi-1.0.0 - ExecuteSQL CrateIO

时间:2016-10-31 13:56:06

标签: sql apache-nifi crate

我正在尝试执行一个用于创建表的sql语句(ExecuteSql proc),表的名称基于filename属性,当执行ExecuteSQl时,它创建表但不将文件路由到任何关系。

我认为这部分是因为为了在CrateIO中创建一个表,你需要输入&#34 ;;"在末尾。如果我这样做,我也会收到错误。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

ExecuteSQL适用于返回ResultSet的查询。尝试使用PutSQL来创建表创建(以及其他DDL语句)。你也不应该在那里使用分号,但是你可以尝试两种方式来看看CrateIO喜欢什么。

编辑(回复评论):如果您在ExecuteSQL中指定查询,它可能类似于:

CREATE TABLE ${filename} (myColumn1 STRING, myColumn2 INT, ...)

你可以在GetFile之后和PutSQL之前用ReplaceText处理器做类似的事情。 ReplaceText会将流文件的内容设置为您的SQL查询,这是PutSQL想要的。

编辑2 :如果您想要自定义逻辑,您可以考虑编写脚本处理器与编写完整的自定义处理器。然后,您可以生成CREATE TABLE,然后将CSV行转换为INSERT语句。如果您发现自己想要连接到数据库,请检查我的blog post如何在脚本处理器中使用DBCP连接池。