I am using Teradata Parallel Transport to select and insert data from tables in a SQL Server to identical tables in a Teradata database. When reviewing the Error Table after failure, I see error 2673 for several columns which is noted in Teradata's documentation as: '2673 The source parcel length does not match data that was defined' . This is happening for NVARCHAR
to VARCHAR
datatypes and INT
to INTEGER
.
Example
How can I fix this error so that the TPT script executes properly? There are many other instances where the circumstances in other columns seem identical but they do not produce this error so I am unsure how to fix.
For context on these problem columns and their data:
Table 1 returns this error for a column with a SQL Source Column defined as
NVARCHAR(100)
being loaded to a Teradata target column defined asVARCHAR(100) CHARACTER SET LATIN CASESPECIFIC
Table 2 returns this error for a column with a SQL Source Column defined as
NVARCHAR(50)
being loaded to a Teradata target column defined asVARCHAR(50) CHARACTER SET LATIN CASESPECIFIC
AND a column with a SQL Source Column defined asINT
being loaded to a Teradata target column defined asINTEGER
You can see more code and how I am explicitly casting the NVARCHAR
to VARCHAR
here.
USING CHAR SET ASCII
DEFINE JOB JobName
DESCRIPTION 'Load data from SQL(tablename) to Teradata(tablename)'
(
DEFINE OPERATOR Database_Commands()
TYPE DDL
ATTRIBUTES
(
VARCHAR TdpId = @Teradata_Connection,
VARCHAR UserName = @Teradata_UserId,
VARCHAR UserPassword = @Teradata_Password,
VARCHAR Array ErrorList = ['2580'],
VARCHAR PrivateLogName = 'ddllog.txt',
VARCHAR Tracelevel='None',
VARCHAR LogSQL = ''
);
/*Examples*/
DEFINE SCHEMA SourceTableSchema
(
columnname INTEGER,
columnname2 VARCHAR(50),
columnname3 VARCHAR(100),
columnname4 VARCHAR(15),
columnname4 BYTEINT
);
DEFINE SCHEMA TargetTableSchema
(
columnname INTEGER,
columnname2 VARCHAR(50),
columnname3 VARCHAR(100),
columnname4 VARCHAR(15),
columnname4 BYTEINT
);
DEFINE OPERATOR ODBC_READER
TYPE ODBC
SCHEMA SourceTableSchema
ATTRIBUTES
(
VARCHAR PrivateLogName = 'odbc_log.txt',
VARCHAR dsnName = 'SQLDatabaseName',
VARCHAR UserName = @ODBC_UserId,
VARCHAR UserPassword = @ODBC_Password,
VARCHAR TraceLevel = 'None',
VARCHAR SelectStmt = @SQL
);
DEFINE OPERATOR TD_LOADER()
TYPE UPDATE
SCHEMA TargetTableSchema
ATTRIBUTES
(
VARCHAR TargetTable = @TargetTable,
VARCHAR LogTable = @ErrDatabase||'.'||@TargetTable||'_LT',
VARCHAR WorkTable = @WorkDatabase||'.'||@TargetTable||'_WT',
VARCHAR ErrorTable1 = @ErrDatabase||'.'||@TargetTable||'_ET',
VARCHAR ErrorTable2 = @ErrDatabase||'.'||@TargetTable||'_UV',
VARCHAR DateForm = 'IntegerDate',
VARCHAR TdpId = @Teradata_Connection,
VARCHAR UserName = @Teradata_UserId,
VARCHAR UserPassword = @Teradata_Password,
VARCHAR WorkingDatabase = @TargetDatabase,
VARCHAR PrivateLogName = 'td_loader_log.txt'
);
STEP RELEASE
(
APPLY
' release mload '|| @TargetDatabase ||'.'||@TargetTable ||' ;'
TO OPERATOR (Database_Commands());
);
STEP Initialize
(
APPLY
' delete from '|| @TargetDatabase ||'.'||@TargetTable ||' '||@DeleteScope||' ;'
TO OPERATOR (Database_Commands());
);
STEP load_the_data
(
APPLY
('INSERT INTO '|| @TargetDatabase ||'.'||@TargetTable||'
(
...columnnames...
);'
)
TO OPERATOR (TD_LOADER)
SELECT
...columnnames...
FROM OPERATOR (ODBC_READER);
);
);
And this is the output for this failure in command line:
TD_LOADER: connecting sessions
TD_LOADER: preparing target table(s)
TD_LOADER: entering DML Phase
TD_LOADER: entering Acquisition Phase
ODBC_READER: sending SELECT request
ODBC_READER: data retrieval complete
Job step load_the_data terminated (status 4)
Job JOBNAME completed successfully, but with warning(s).
Job start: Fri Dec 1 13:35:37 2023
Job end: Fri Dec 1 13:41:30 2023
ODBC_READER: Total Rows Exported: 266102
ODBC_READER: disconnecting sessions
ODBC_READER: Total processor time used = '1.54688 Second(s)'
TD_LOADER: entering Application Phase
ODBC_READER: Start : Fri Dec 1 13:35:45 2023
ODBC_READER: End : Fri Dec 1 13:41:29 2023
TD_LOADER: Statistics for Target Table: 'TableName'
TD_LOADER: Rows Inserted: 0
TD_LOADER: Rows Updated: 0
TD_LOADER: Rows Deleted: 0
TD_LOADER: entering Cleanup Phase
TD_LOADER: Error Table Statistics for Target Table : 'TableName'
TD_LOADER: Total Rows in Error Table 1: 266102
TD_LOADER: Total Rows in Error Table 2: 0
TD_LOADER: disconnecting sessions