对Teradata使用GenerateTableFetch处理器

对Teradata使用GenerateTableFetch处理器,teradata,apache-nifi,Teradata,Apache Nifi,我们需要使用GenerateTableFetch来使用nifi从teradata获取大量数据。但由于Teradata不是作为数据库类型出现的,所以它会生成Limit关键字。我可以用Sample关键字替换它。但是sample everytime会给出随机值,那么如何将Nifi与Teradata一起用于大型表呢?也许可以尝试MS SQL 2008适配器,它会生成TOP语句以及ROW_NUMBER OVER子句。如果这不起作用,我们需要TeradabaseAdapter实现,请根据需要提交改进Jira

我们需要使用GenerateTableFetch来使用nifi从teradata获取大量数据。但由于Teradata不是作为数据库类型出现的,所以它会生成Limit关键字。我可以用Sample关键字替换它。但是sample everytime会给出随机值,那么如何将Nifi与Teradata一起用于大型表呢?

也许可以尝试MS SQL 2008适配器,它会生成TOP语句以及ROW_NUMBER OVER子句。如果这不起作用,我们需要TeradabaseAdapter实现,请根据需要提交改进Jira。

您可以尝试选择TOP n而不是LIMIT n。但是generateTableFetch会创建一个页面大小的查询范围,因此如果页面大小为100。第一个查询获取0-100,第二个查询获取100-200,第三个查询获取200-300。如何运行类似teradata中rownum的查询?如果没有order by,则无法可靠地在结果集中获得相同的顺序。在唯一列上使用row_number将有效,但这可能会造成巨大的开销,因为我认为您可以。我实际上没有这样做,但它在列表中…嗨,安德鲁,我们使用的是同一个驱动程序,但问题是我们必须对大表使用generateTableFetch,而NIFI没有隐式Teradapter。所以我们使用的是MSSQL,但这些查询的格式并不完全是teradata格式,所以我们现在使用另一个脚本对它们进行格式化。我尝试了它生成的查询:SELECT*FROM SELECT TOP 10000*,行号由asc rnum从dbcinfo超额订购,其中1=1 A,其中rnum>0和rnum如果您可以通过正则表达式识别要更改的部分,则可以使用ReplaceText。是的,仅此而已……还针对通用实现提出了JIRA。