使用BTEQ导入Oracle数据至Teradata遇Failure 2673错误求助
问题分析与解决方案
核心错误点
你的BTEQ脚本存在字段数量不匹配的问题,直接触发了2673错误和数据不足警告:
- 目标表插入列共3个(
Frst_Name,Status_Code,UPDATE_DT),但VALUES子句里写了4个值(:Frst_Name,:STR_VAL2,:Status_Code,CURRENT_DATE),其中:STR_VAL2并未在USING子句中定义 USING子句仅定义2个字段,却被错误引用了3个变量,导致Teradata解析时数据长度与定义不匹配
修正后的BTEQ脚本
bteq <<EOF .LOGON <Teardata_server>/<username>,<password>; .PACK 1000 .IMPORT VARTEXT ',' FILE=$FILE_NM1 .REPEAT * USING(Frst_Name VARCHAR(50), Status_Code VARCHAR(5)) -- Status_Code匹配表的CHAR(5),用VARCHAR可兼容 insert into WORK_MCID_STREQUI_VAL_LKUP (Frst_Name, Status_Code, UPDATE_DT) values (:Frst_Name, :Status_Code, CURRENT_DATE); -- 变量数量与目标列数一致,移除多余的:STR_VAL2 .LOGOFF; .QUIT; EOF
额外检查项
- 验证Oracle导出文件格式:确保是逗号分隔的两列数据,每行字段数量与
USING定义一致,无空行或格式错乱的行 - 字符集兼容性:Teradata表使用LATIN字符集,需确认导出文件未包含LATIN不支持的特殊字符
- 换行符格式:若文件是Windows环境导出,可能存在
CRLF换行符,Linux环境下需用dos2unix工具转换为LF格式
内容的提问来源于stack exchange,提问作者shahziya Shaikh
相关产品推荐
相关产品推荐

