sql - 导入文件到表错误: Failure 2673

标签 sql database csv import teradata

我正在尝试使用 BTEQ 将 csv 文件(由 | 分隔)加载到 Teradata 表。 不幸的是,我收到错误 Failure 2673 The source parcel length does not match data that was defined。对可能导致这些错误的原因的任何想法表示赞赏。如果您需要更多详细信息,请告诉我。谢谢。

这是表 DDL:

    CREATE MULTISET TABLE DATABASE.EMPLOYEE ,NO FALLBACK ,
         NO BEFORE JOURNAL,
         NO AFTER JOURNAL,
         CHECKSUM = DEFAULT,
         DEFAULT MERGEBLOCKRATIO
         (
          EMP_ID VARCHAR(11) CHARACTER SET LATIN NOT CASESPECIFIC,
          FIRST_NAME VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC,
          MIDDLE_NAME VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC,
          LAST_NAME VARCHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC,
          SEX CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS,
          BIRTHDATE CHAR(10) CHARACTER SET LATIN NOT CASESPECIFIC COMPRESS,
          LOAD_DT TIMESTAMP(6))
    PRIMARY INDEX ( EMP_ID );

BTEQ 脚本:

    .LOGON xxxxx/XXXXX,XXXXX
    .IMPORT VARTEXT '|' FILE='C:/XXXX/XXXX.csv' , skip = 1;
    .QUIET ON
    USING 
    (   EMP_ID VARCHAR(11)
    ,FIRST_NAME VARCHAR(30)
    ,MIDDLE_NAME VARCHAR(30)
    ,LAST_NAME VARCHAR(30)
    ,SEX CHAR(1)
    ,BIRTHDATE CHAR(10)
    ,LOAD_DT TIMESTAMP(6)
    )        
    INSERT INTO DATABASE.EMPLOYEE
        ( EMP_ID
    ,FIRST_NAME
    ,MIDDLE_NAME
    ,LAST_NAME
    ,SEX
    ,BIRTHDATE
    ,LOAD_DT
    )
    VALUES ( 
    :EMP_ID
    ,:FIRST_NAME
    ,:MIDDLE_NAME
    ,:LAST_NAME
    ,:SEX
    ,:BIRTHDATE
    ,CURRENT_TIMESTAMP
    );
    .LOGOFF
    .QUIT

CSV 文件

EMP_ID|FIRST_NAME|MIDDLE_NAME|LAST_NAME|SEX|BIRTHDATE
00011111|Sam|Arthur|Heinz|F|1955-01-01
00022222|Liam||Carter|M|1914-04-11
00033333|Edward|Johnson|Johnson|M|1958-07-13

最佳答案

我认为产生此错误是因为您在 USING 子句中定义了 LOAD_DT 并且 BTEQ 期望导入文件中存在一个字段。相反,它会遇到 EOR,这会导致源包裹长度与您定义的长度不匹配的错误。

尝试从您的 using 子句中删除 LOAD_DT 并在您的 INSERT 中保留 CURRENT_TIMESTAMP 或将列的 DEFAULT 更改为 CURRENT_TIMESTAMP。

如果我可以提出一个建议,我会将 BIRTHDATE 正确定义为 DATE 而不是 CHAR(10)

关于sql - 导入文件到表错误: Failure 2673,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643937/

相关文章:

具有 LIKE 和 AND 子句的 MySQL 查询

mysql - SQL 挑战 - 显示具有特定列值的 N(1、X 或全部)行

database - 一个表可以有一个没有(自然)备用键的代理键吗?

MySql:在数据库中存储多选数据

Python Tkinter GUI乱码打印格式

SQL Azure 隐私问题

sql - 使用外部表时检索文件名

database - 如何备份 Firebird 数据库?

python - 为什么 csv.DictReader 给我一个无属性错误?

python - 在python中将数据帧打印到.csv。 TypeError :must be convertible to a buffer