Hi All,
I am making some tests to move data from Db2 to Netezza using Nifi. If I
don't use costume processors, it's a indirect away :
ExecuteSQL(on db2) -> ConvertAvroToJSON -> ConvertJSONToSQL -> PutSQL (bulk on
netezza)
and this away, I have an Exception on ConvertJSONToSQL:
org.netezza.error.NzSQLException: The column name IS_AUTOINCREMENT not found.
at org.netezza.sql.NzResultSet.findColumn(NzResultSet.java:266)
~[nzjdbc.jar:na]
at org.netezza.sql.NzResultSet.getString(NzResultSet.java:1407)
~[nzjdbc.jar:na]
at
org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263)
~[na:na]
at
org.apache.nifi.processors.standard.ConvertJSONToSQL$ColumnDescription.from(ConvertJSONToSQL.java:678)
~[nifi-standard-processors-0.7.0.jar:0.7.0]
Netezza jdbc driver doesn't implement IS_AUTOINCREMENT metadata column ( the
same is true for oracle driver). Probably the reason is Netezza and Oracle
don't have incremental columns because they use Sequences for this purpose.
On possible solution it to put a try catch (isn't beautiful) around
final String autoIncrementValue = resultSet.getString("IS_AUTOINCREMENT");
(ConvertJSONToSQL.java:678)
and on the catch, put autoIncrementValue='NO'
Besides this error , we can remove on step ConvertAvroToJSON in the flow if
ExecuteSQL is changed to generate optional
Output: Avro or JSON.
What you Think?
Thanks
Carlos