JDBC FastLoad - error 3737

Connectivity
Enthusiast

JDBC FastLoad - error 3737

Hi,

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
(
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.

Tags (3)
2 REPLIES
Teradata Employee

Re: JDBC FastLoad - error 3737

That restriction is documented in the Teradata JDBC Driver Reference (available here on Developer Exchange).

http://developer.teradata.com/doc/connectivity/jdbc/reference/current/jdbcug_chapter_2.html#BABFGFAF

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."

Enthusiast

Re: JDBC FastLoad - error 3737

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.