I am using JDBC FastLoad to transfer data between different teradata environments.
I have been hitting an error message:
java.sql.SQLException: [Teradata Database] [TeraJDBC 15.00.00.20] [Error 3737] [SQLState 42000] Name requires more than 30 bytes in LATIN internal form.
This is for a table with DDL such as (and the source and target tables are identical):
CREATE SET TABLE databaseX.tableX
From looking in dbc.QryLog, the error is caused by the JDBC driver constructing a statement such as the following:
USING "F_a_very_very_long_column_length" (VARCHAR(1)) INSERT INTO "databaseX"."tableX" ( "a_very_very_long_column_length" ) VALUES ( :"F_a_very_very_long_column_length" )
i.e. it is prefixing the column name with "F_", and thereby exceeding the 30 character limit....
I'm interested to know if anybody has encounted this before, and if there is any way around it. It seems to imply that there is a column length limit for JDBC FastLoads of 28 characters, is that right? I can't find this documented.
Non-FastLoad inserts work fine, by the way.
That restriction is documented in the Teradata JDBC Driver Reference (available here on Developer Exchange).
"The destination table column names must not exceed 28 characters. Beginning with Teradata Database 14.10, the column names must not exceed 126 characters."
Thank you very much for replying so quickly. You are absolutely correct, I don't know how I missed that point in the documentation....If I'd read more carefully I'd have saved myself some time.