Yes the LRECL=375. If I change the LRECL to 375 I get error message
FILE_WRITER: TPT19438 pmOpen failed. LRECL does not match length defined by data schema (38)
So that tells me TPT needs the extra 8 bytes for the indicatormode and it is padding at end of record when INDICATORMODE='N'
INDICATOR BYTES NEEDED: 8
EXPECTED RECORD LENGTH: 383
To prove this I took one of the examples from the TERADATA samplib (GT95) and ran some different tests with RECFM=FB and RECFM=VB ....RECFM=VB doesn't pad the indicator byte with INDICATORMODE='N' but you still have to add 1 to record length for the indicator byte and add 4 to record length for RECFM=VB, see results below
/**************************************************************/
/* */
/* Copyright 2007-2009, Teradata Corporation. */
/* All Rights Reserved. */
/* */
/* Script Name: GT95.txt */
/**************************************************************/
DEFINE JOB UPSERT_EMPLOYEE_TABLE_FROM_FILE
DESCRIPTION 'UPSERT SAMPLE EMPLOYEE TABLE FROM A FILE'
(
DEFINE SCHEMA EMPLOYEE_SCHEMA
DESCRIPTION 'SAMPLE EMPLOYEE SCHEMA'
(
EMP_ID CHAR(5),
EMP_NAME CHAR(10),
DEPT_NAME CHAR(10)
);
DEFINE OPERATOR DDL_OPERATOR()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DDL OPERATOR'
TYPE DDL
ATTRIBUTES
(
VARCHAR PrivateLogName = 'GT95_ddloper_log',
VARCHAR TdpId = @MyTdpId,
VARCHAR UserName = @MyUserName,
VARCHAR AccountID,
VARCHAR ErrorList = '3807'
);
DEFINE OPERATOR FILE_WRITER()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DATA CONNECTOR OPERATOR'
TYPE DATACONNECTOR CONSUMER
SCHEMA EMPLOYEE_SCHEMA
ATTRIBUTES
(
VARCHAR PrivateLogName = 'GT95_dataconnoper_writer_privatelog',
VARCHAR FileName = @GT95_FileName,
VARCHAR INDICATORMODE = 'N',
VARCHAR OpenMode = 'Write',
VARCHAR FORMAT = 'UNFORMATTED'
);
DEFINE OPERATOR EXPORT_OPERATOR()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER EXPORT OPERATOR'
TYPE EXPORT
SCHEMA EMPLOYEE_SCHEMA
ATTRIBUTES
(
VARCHAR PrivateLogName = 'GT95_exportoper_privatelog',
INTEGER MaxSessions = 32,
INTEGER MinSessions = 1,
VARCHAR TdpId = @MyTdpId,
VARCHAR UserName = @MyUserName,
VARCHAR AccountId,
VARCHAR SelectStmt = 'SELECT * FROM TEMP_EMP_TABLE;'
);
STEP setup_tables
(
APPLY
('DROP TABLE TEMP_EMP_TABLE;'),
('DROP TABLE GT95_STREAMOPER_ERRTABLE;'),
('DROP TABLE GT95_STREAMOPER_LOGTABLE;'),
('CREATE TABLE TEMP_EMP_TABLE(EMP_ID CHAR(5), EMP_NAME CHAR(10),
DEPT_NAME CHAR(10));'),
('INSERT INTO TEMP_EMP_TABLE(''119'',''RALPH'',''LAW'');'),
('INSERT INTO TEMP_EMP_TABLE(''114'',''ZACH'',''SERVICE'');'),
('INSERT INTO TEMP_EMP_TABLE(''105'',''ELLEN'',''PARTS'');'),
('INSERT INTO TEMP_EMP_TABLE(''110'',''ALICE'',''LAW'');'),
('INSERT INTO TEMP_EMP_TABLE(''115'',''GEORGE'',''SERVICE'');'),
('INSERT INTO TEMP_EMP_TABLE(''121'',''HENRY'',''PARTS'');'),
('INSERT INTO TEMP_EMP_TABLE(''122'',''RAY'',''FINANCE'');'),
('INSERT INTO TEMP_EMP_TABLE(''123'',''LAURA'',''PARTS'');'),
('INSERT INTO TEMP_EMP_TABLE(''124'',''SHEILA'',''SERVICE'');'),
('INSERT INTO TEMP_EMP_TABLE(''125'',''IVAN'',''PARTS'');')
TO OPERATOR (DDL_OPERATOR () );
);
STEP setup_export_to_file
(
APPLY TO OPERATOR (FILE_WRITER() Ý1¨ )
SELECT * FROM OPERATOR (EXPORT_OPERATOR() Ý1¨ );
);
);
With INDICATORMODE='Y' RECFM=FB LRECL=26, puts indicator byte at beginning of record
===================================================================
Column Name Offset Length Type
============================== ====== ====== ========================
EMP_ID 0 5 CHAR
EMP_NAME 5 10 CHAR
DEPT_NAME 15 10 CHAR
============================== ====== ====== ========================
INDICATOR BYTES NEEDED: 1
EXPECTED RECORD LENGTH: 26
.123 LAURA PARTS
.124 SHEILA SERVICE
.121 HENRY PARTS
.125 IVAN PARTS
.110 ALICE LAW
.115 GEORGE SERVICE
.114 ZACH SERVICE
.119 RALPH LAW
.122 RAY FINANCE
.105 ELLEN PARTS
With INDICATORMODE='N' RECFM=FB LRECL=26, puts indicator byte at end of record
======================================================
Column Name Offset Length Type
============================== ====== ====== =========
EMP_ID 0 5 CHAR
EMP_NAME 5 10 CHAR
DEPT_NAME 15 10 CHAR
============================== ====== ====== =========
INDICATOR BYTES NEEDED: 1
EXPECTED RECORD LENGTH: 26
105 ELLEN PARTS .
114 ZACH SERVICE .
115 GEORGE SERVICE .
124 SHEILA SERVICE .
110 ALICE LAW .
121 HENRY PARTS .
125 IVAN PARTS .
123 LAURA PARTS .
122 RAY FINANCE .
119 RALPH LAW .
With INDICATORMODE='N' RECFM=VB LRECL=30 (extra 4 bytes added for RECFM=VB), no indicator bytes are written/padded
======================================================
Column Name Offset Length Type
============================== ====== ====== =========
EMP_ID 0 5 CHAR
EMP_NAME 5 10 CHAR
DEPT_NAME 15 10 CHAR
============================== ====== ====== =========
INDICATOR BYTES NEEDED: 1
EXPECTED RECORD LENGTH: 26
124 SHEILA SERVICE
115 GEORGE SERVICE
121 HENRY PARTS
114 ZACH SERVICE
122 RAY FINANCE
110 ALICE LAW
125 IVAN PARTS
123 LAURA PARTS
105 ELLEN PARTS
119 RALPH LAW
With INDICATORMODE='Y' RECFM=VB LRECL=30 (extra 4 bytes added for RECFM=VB), indicator bytes are written at beginning of record
======================================================
Column Name Offset Length Type
============================== ====== ====== =========
EMP_ID 0 5 CHAR
EMP_NAME 5 10 CHAR
DEPT_NAME 15 10 CHAR
============================== ====== ====== =========
INDICATOR BYTES NEEDED: 1
EXPECTED RECORD LENGTH: 26
.119 RALPH LAW
.114 ZACH SERVICE
.115 GEORGE SERVICE
.122 RAY FINANCE
.110 ALICE LAW
.105 ELLEN PARTS
.124 SHEILA SERVICE
.123 LAURA PARTS
.125 IVAN PARTS
.121 HENRY PARTS
Yes the LRECL=375. If I change the LRECL to 375 I get error message
FILE_WRITER: TPT19438 pmOpen failed. LRECL does not match length defined by data schema (38)
So that tells me TPT needs the extra 8 bytes for the indicatormode and it is padding at end of record when INDICATORMODE='N'
INDICATOR BYTES NEEDED: 8
EXPECTED RECORD LENGTH: 383
To prove this I took one of the examples from the TERADATA samplib (GT95) and ran some different tests with RECFM=FB and RECFM=VB ....RECFM=VB doesn't pad the indicator byte with INDICATORMODE='N' but you still have to add 1 to record length for the indicator byte and add 4 to record length for RECFM=VB, see results below
/**************************************************************/
/* */
/* Copyright 2007-2009, Teradata Corporation. */
/* All Rights Reserved. */
/* */
/* Script Name: GT95.txt */
/**************************************************************/
DEFINE JOB UPSERT_EMPLOYEE_TABLE_FROM_FILE
DESCRIPTION 'UPSERT SAMPLE EMPLOYEE TABLE FROM A FILE'
(
DEFINE SCHEMA EMPLOYEE_SCHEMA
DESCRIPTION 'SAMPLE EMPLOYEE SCHEMA'
(
EMP_ID CHAR(5),
EMP_NAME CHAR(10),
DEPT_NAME CHAR(10)
);
DEFINE OPERATOR DDL_OPERATOR()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DDL OPERATOR'
TYPE DDL
ATTRIBUTES
(
VARCHAR PrivateLogName = 'GT95_ddloper_log',
VARCHAR TdpId = @MyTdpId,
VARCHAR UserName = @MyUserName,
VARCHAR AccountID,
VARCHAR ErrorList = '3807'
);
DEFINE OPERATOR FILE_WRITER()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DATA CONNECTOR OPERATOR'
TYPE DATACONNECTOR CONSUMER
SCHEMA EMPLOYEE_SCHEMA
ATTRIBUTES
(
VARCHAR PrivateLogName = 'GT95_dataconnoper_writer_privatelog',
VARCHAR FileName = @GT95_FileName,
VARCHAR INDICATORMODE = 'N',
VARCHAR OpenMode = 'Write',
VARCHAR FORMAT = 'UNFORMATTED'
);
DEFINE OPERATOR EXPORT_OPERATOR()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER EXPORT OPERATOR'
TYPE EXPORT
SCHEMA EMPLOYEE_SCHEMA
ATTRIBUTES
(
VARCHAR PrivateLogName = 'GT95_exportoper_privatelog',
INTEGER MaxSessions = 32,
INTEGER MinSessions = 1,
VARCHAR TdpId = @MyTdpId,
VARCHAR UserName = @MyUserName,
VARCHAR AccountId,
VARCHAR SelectStmt = 'SELECT * FROM TEMP_EMP_TABLE;'
);
STEP setup_tables
(
APPLY
('DROP TABLE TEMP_EMP_TABLE;'),
('DROP TABLE GT95_STREAMOPER_ERRTABLE;'),
('DROP TABLE GT95_STREAMOPER_LOGTABLE;'),
('CREATE TABLE TEMP_EMP_TABLE(EMP_ID CHAR(5), EMP_NAME CHAR(10),
DEPT_NAME CHAR(10));'),
('INSERT INTO TEMP_EMP_TABLE(''119'',''RALPH'',''LAW'');'),
('INSERT INTO TEMP_EMP_TABLE(''114'',''ZACH'',''SERVICE'');'),
('INSERT INTO TEMP_EMP_TABLE(''105'',''ELLEN'',''PARTS'');'),
('INSERT INTO TEMP_EMP_TABLE(''110'',''ALICE'',''LAW'');'),
('INSERT INTO TEMP_EMP_TABLE(''115'',''GEORGE'',''SERVICE'');'),
('INSERT INTO TEMP_EMP_TABLE(''121'',''HENRY'',''PARTS'');'),
('INSERT INTO TEMP_EMP_TABLE(''122'',''RAY'',''FINANCE'');'),
('INSERT INTO TEMP_EMP_TABLE(''123'',''LAURA'',''PARTS'');'),
('INSERT INTO TEMP_EMP_TABLE(''124'',''SHEILA'',''SERVICE'');'),
('INSERT INTO TEMP_EMP_TABLE(''125'',''IVAN'',''PARTS'');')
TO OPERATOR (DDL_OPERATOR () );
);
STEP setup_export_to_file
(
APPLY TO OPERATOR (FILE_WRITER() Ý1¨ )
SELECT * FROM OPERATOR (EXPORT_OPERATOR() Ý1¨ );
);
);
With INDICATORMODE='Y' RECFM=FB LRECL=26, puts indicator byte at beginning of record
===================================================================
Column Name Offset Length Type
============================== ====== ====== ========================
EMP_ID 0 5 CHAR
EMP_NAME 5 10 CHAR
DEPT_NAME 15 10 CHAR
============================== ====== ====== ========================
INDICATOR BYTES NEEDED: 1
EXPECTED RECORD LENGTH: 26
.123 LAURA PARTS
.124 SHEILA SERVICE
.121 HENRY PARTS
.125 IVAN PARTS
.110 ALICE LAW
.115 GEORGE SERVICE
.114 ZACH SERVICE
.119 RALPH LAW
.122 RAY FINANCE
.105 ELLEN PARTS
With INDICATORMODE='N' RECFM=FB LRECL=26, puts indicator byte at end of record
======================================================
Column Name Offset Length Type
============================== ====== ====== =========
EMP_ID 0 5 CHAR
EMP_NAME 5 10 CHAR
DEPT_NAME 15 10 CHAR
============================== ====== ====== =========
INDICATOR BYTES NEEDED: 1
EXPECTED RECORD LENGTH: 26
105 ELLEN PARTS .
114 ZACH SERVICE .
115 GEORGE SERVICE .
124 SHEILA SERVICE .
110 ALICE LAW .
121 HENRY PARTS .
125 IVAN PARTS .
123 LAURA PARTS .
122 RAY FINANCE .
119 RALPH LAW .
With INDICATORMODE='N' RECFM=VB LRECL=30 (extra 4 bytes added for RECFM=VB), no indicator bytes are written/padded
======================================================
Column Name Offset Length Type
============================== ====== ====== =========
EMP_ID 0 5 CHAR
EMP_NAME 5 10 CHAR
DEPT_NAME 15 10 CHAR
============================== ====== ====== =========
INDICATOR BYTES NEEDED: 1
EXPECTED RECORD LENGTH: 26
124 SHEILA SERVICE
115 GEORGE SERVICE
121 HENRY PARTS
114 ZACH SERVICE
122 RAY FINANCE
110 ALICE LAW
125 IVAN PARTS
123 LAURA PARTS
105 ELLEN PARTS
119 RALPH LAW
With INDICATORMODE='Y' RECFM=VB LRECL=30 (extra 4 bytes added for RECFM=VB), indicator bytes are written at beginning of record
======================================================
Column Name Offset Length Type
============================== ====== ====== =========
EMP_ID 0 5 CHAR
EMP_NAME 5 10 CHAR
DEPT_NAME 15 10 CHAR
============================== ====== ====== =========
INDICATOR BYTES NEEDED: 1
EXPECTED RECORD LENGTH: 26
.119 RALPH LAW
.114 ZACH SERVICE
.115 GEORGE SERVICE
.122 RAY FINANCE
.110 ALICE LAW
.105 ELLEN PARTS
.124 SHEILA SERVICE
.123 LAURA PARTS
.125 IVAN PARTS
.121 HENRY PARTS