All Forums Connectivity
JaimeHolland 35 posts Joined 02/14
26 Aug 2014
JDBC FastLoad - error 3737

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] [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
      a_very_very_long_column_length CHAR(1) 

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.

tomnolan 594 posts Joined 01/08
26 Aug 2014

That restriction is documented in the Teradata JDBC Driver Reference (available here on Developer Exchange).
Relevant excerpt:
"The destination table column names must not exceed 28 characters. Beginning with Teradata Database 14.10, the column names must not exceed 126 characters."

JaimeHolland 35 posts Joined 02/14
26 Aug 2014

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.

You must sign in to leave a comment.