FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

Tools

FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

Hi All,

I’m facing a problem to invoke the fastload script. The script is :

DATEFORM ANSIDATE;
.LOGON dwtest/informatica,inf_test;
.ROUTE MESSAGES WITH ECHO TO FILE /users/mis/narahar/fl_informatica.out.ldrlog;
database infmat;
DROP TABLE infmat.adt;
DROP TABLE infmat.et1_fl_audit;
DROP TABLE infmat.et2_fl_audit;
CREATE SET TABLE infmat.AUDIT ,NO FALLBACK ,NO BEFORE JOURNAL,NO AFTER JOURNAL,CHECKSUM = DEFAULT(
PROCESS_END_DT_TM TIMESTAMP(0) FORMAT 'yyyy-mm-ddbhh:mi:ss',
AUDIT_SID INTEGER NOT NULL,
PROCESS_ID INTEGER,
PROCESS_BEGIN_DT_TM TIMESTAMP(0) FORMAT 'yyyy-mm-ddbhh:mi:ss' NOT NULL,
PROCESS_SEQ_ID INTEGER,
PROGRAM_NAME VARCHAR(70) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
PROCESS_NAME VARCHAR(70) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
PROGRAM_ID INTEGER,
PROCESS_TYPE VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
PROCESS_STATUS VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL)
UNIQUE PRIMARY INDEX ( AUDIT_SID );

BEGIN LOADING infmat.audit
ERRORFILES infmat.et1_fl_audit,infmat.et2_fl_audit;
SET RECORD TEXT;
DEFINE
PROCESS_END_DT_TM (CHAR(21),NULLIF='0000-00-00b00:00:00'),
AUDIT_SID (char(20)),
PROCESS_ID (CHAR(19),NULLIF='*'),
PROCESS_BEGIN_DT_TM (CHAR(19)),
PROCESS_SEQ_ID (CHAR(47)),
PROGRAM_NAME (CHAR(65)),
PROCESS_NAME (CHAR(70)),
PROGRAM_ID (CHAR(19)),
PROCESS_TYPE (CHAR(15)),
PROCESS_STATUS (CHAR(30))
file=/users/mis/abc/flexpt.dat;
INSERT INTO infmat.audit(
PROCESS_END_DT_TM,
AUDIT_SID,
PROCESS_ID,
PROCESS_BEGIN_DT_TM,
PROCESS_SEQ_ID,
PROGRAM_NAME,
PROCESS_NAME,
PROGRAM_ID,
PROCESS_TYPE,
PROCESS_STATUS )values (
: PROCESS_END_DT_TM (FORMAT 'yyyy-mm-ddbhh:mi:ss'),
: AUDIT_SID,
: PROCESS_ID,
: PROCESS_BEGIN_DT_TM,
: PROCESS_SEQ_ID,
: PROGRAM_NAME,
: PROCESS_NAME,
: PROGRAM_ID,
: PROCESS_TYPE,
: PROCESS_STATUS);

END LOADING;
LOGOFF;

The invoked script and error is:
fastload

0001 DATEFORM ANSIDATE;
**** 00:39:25 Date/Time Format set to ANSIDATE
*** 00:39:25 Command completed successfully
0002 .LOGON dwtest/informatica,
**** 00:39:25 Teradata Database Release: V2R.06.01.01.14
**** 00:39:25 Teradata Database Version: 06.01.01.16
**** 00:39:25 Current CLI or RDBMS allows maximum row size: 64K
**** 00:39:25 Character set for this job: ASCII
**** 00:39:42 Number of FastLoad sessions connected = 48
**** 00:39:42 FDL4808 LOGON successful
0003 .ROUTE MESSAGES WITH ECHO TO FILE /users/mis/narahar/fl_informatica.out.ldrlog;
0004 database informat;
**** 00:39:42 Command completed successfully
0005 DROP TABLE informatica.audit;
**** 00:39:43 Command completed successfully
0006 DROP TABLE informatica.et1_fl_audit;
**** 00:39:43 Command completed successfully
0007 DROP TABLE informatica.et2_fl_audit;
**** 00:39:43 Command completed successfully
0008 CREATE SET TABLE informatica.AUDIT ,NO FALLBACK ,
NO BEFORE JOURNAL,NO AFTER JOURNAL,CHECKSUM = DEFAULT
(PROCESS_END_DT_TM TIMESTAMP(0) FORMAT 'yyyy-mm-ddbhh:mi:ss',
AUDIT_SID INTEGER NOT NULL,
PROCESS_ID INTEGER,
PROCESS_BEGIN_DT_TM TIMESTAMP(0) FORMAT 'yyyy-mm-ddbhh:mi:ss' NOT NULL,
PROCESS_SEQ_ID INTEGER,
PROGRAM_NAME VARCHAR(70) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
PROCESS_NAME VARCHAR(70) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
PROGRAM_ID INTEGER,
PROCESS_TYPE VARCHAR(15) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL,
PROCESS_STATUS VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL)
UNIQUE PRIMARY INDEX ( AUDIT_SID );

**** 00:39:43 Command completed successfully
0009 BEGIN LOADING informatica.audit
ERRORFILES informatica.et1_fl_audit, informatica.et2_fl_audit;

**** 00:39:44 Number of AMPs available: 48

**** 00:39:44 BEGIN LOADING COMPLETE
0010 SET RECORD TEXT;
**** 00:39:44 Now set to read 'TEXT' records
**** 00:39:44 Command completed successfully
0011 DEFINE
PROCESS_END_DT_TM (CHAR(21),NULLIF='0000-00-00b00:00:00'),
AUDIT_SID (char(20)),
PROCESS_ID (CHAR(19),NULLIF='*'),
PROCESS_BEGIN_DT_TM (CHAR(19)),
PROCESS_SEQ_ID (CHAR(47)),
PROGRAM_NAME (CHAR(65)),
PROCESS_NAME (CHAR(70)),
PROGRAM_ID (CHAR(19)),
PROCESS_TYPE (CHAR(15)),
PROCESS_STATUS (CHAR(30))
file=/users/mis/narahar/flexpt.dat;
**** 00:39:44 FDL4803 DEFINE statement processed

0012 INSERT INTO informatica.audit(
PROCESS_END_DT_TM
AUDIT_SID,
PROCESS_ID,
PROCESS_BEGIN_DT_TM,
PROCESS_SEQ_ID,
PROGRAM_NAME,
PROCESS_NAME,
PROGRAM_ID,
PROCESS_TYPE,
PROCESS_STATUS )values (
: PROCESS_END_DT_TM (FORMAT 'yyyy-mm-ddbhh:mi:ss'),
: AUDIT_SID,
: PROCESS_ID,
: PROCESS_BEGIN_DT_TM,
: PROCESS_SEQ_ID,
: PROGRAM_NAME,
: PROCESS_NAME,
: PROGRAM_ID,
: PROCESS_TYPE,
: PROCESS_STATUS);
*** 00:39:44 Number of recs/msg: 194

*** 00:39:44 Starting to send to RDBMS with record 1
**** 00:39:44 RECORD is too short by 60 byte(s)
Field 1: 2002-12-03 08:33:36
Field 2: 265
Field 3: 2002-12-03 08:24:55
Field 4: WORKORDER
Field 5:
Field 6: WORKORDER

Field 7: ETL - INFORMATICOMPLETED

**** 00:39:44 FDL4830 CHAR/BYTE Type - record too short

===================================================================

= =

= Logoff/Disconnect =

= =

===================================================================

**** 00:39:44 Logging off all sessions
**** 00:39:46 Total processor time used = '9.32 Seconds'
. Start : Tue May 8 00:39:25 2007
. End : Tue May 8 00:39:46 2007
. Highest return code encountered = '12'.
**** 00:39:46 FastLoad Paused

Please help me to Invoke a fastload Script.

Regards,
B Mohan Kumar

8 REPLIES

Re: FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

Since the error message says the record is short by 60 bytes, why don't you check the length of each fields in the record in input file ?

Re: FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

I have the same problem. A simple test from fastexport to a DAT file and then a reload using fastload is failing with the "too short by 3 bytes" message.

Am I missing something in the export?
How can I check the record length in a binary DAT file after the export?
Is there a default format that will work automatically from fastexport to fastload as done below?

The following scripts are run using bteq.

Fastexport script:
.logtable $dbname.restartlog;
.logon $userid,$passwd;
.begin export sessions 4;
.export outfile $dbname.$tblname.dat mode indicator;

select * from $dbname.$tblname;
.end export;
.logoff;

Fastload script:
.sessions 2;
.logon $userid, $passwd;
database $dbname;
begin loading $tblname
errorfiles errtbl1, errtbl2 checkpoint 50000 indicators;
define file = $dbname.$tblname.dat;
insert into $dbname.$tblname.*;
.end loading;
.logoff;

Error Message (in the insert phase):
...
0006 insert into .*;

**** 14:36:08 Number of recs/msg: 196
**** 14:36:08 Starting to send to RDBMS with record 1
**** 14:36:08 RECORD is too short by 3 byte(s)
**** 14:36:08 Possible cause: Variable size field may not contain
2-byte length or 2-byte length may be invalid.
...

Re: FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

When trying to load data from an input file, I have also encountered an error message:

UTY4205 Record '1' of file is too short by '20' bytes

I don't know what this error means or how can I solve this error. If I am going to check the field in the input file, I will also not be able to understand what are written there since the content of the input file .DAT is encrypted unless I have successfully loaded it to the table.

Can anyone help me understand this or do you know of any reference materials or sources where I can study and understand the error codes in the Multiload processing, like UTY4205?

Thank you.

Teradata Employee

Re: FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

Are you using DBS in Japanese mode?

Rather than using $dbname.$tblname.* use the DEFINE structure matching with the schema.

Re: FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

If the source table has some DECIMAL column and the precision is higher than 18 (i.e. the precision is 19 or more), then in the fastexport script you should add a "DECIMALDIGITS 38" specifier in the "BEGIN EXPORT" command.

E.g.:

.BEGIN EXPORT SESSIONS 8 DECIMALDIGITS 38;

Teradata Employee

Re: FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

Default mode in fastexport is "mode indicator" where as default mode in fastload is "mode record".

So, when exporting the data using fastexport, always use "mode record" and use default mode in fastload or vice versa.

Re: FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

the same problem has annoyed to me also and i am looking for some appropriate solution to it, a help would be appreciated here

Teradata Employee

Re: FastLoad Error: FDL4830 CHAR/BYTE Type - record too short

I've had this problem by using a "FXP->FLD" load and and I've found that the poblem was for Unicode columns... I changed them to LATIN so I solved the problem.... I expect it will be usefull for you too.