【问题标题】:Import file to table error : Failure 2673将文件导入表错误:失败 2673
【发布时间】:2014-10-27 22:21:27
【问题描述】:

我正在尝试使用 BTEQ 将 csv 文件(由 | 分隔)加载到 Teradata 表中。 不幸的是,我收到错误 Failure 2673 The source parcel length does not match data that is 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

【问题讨论】:

    标签: sql database csv import teradata


    【解决方案1】:

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

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

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

    【讨论】:

    • 我已经删除了使用部分中与 csv 文件中不匹配的列。但我仍然收到错误。
    • 更新:我尝试将 LOAD_DT 更改为 DATE,但也没有用。我做了一些测试并添加了另一个包含日期值的字段。我使用 CHAR(10) 的第一个(日期)列,仍然有错误。我使用了 VARCHAR(10) 第二个(日期)列,它可以工作。关于 BTEQ 如何转换文件字符长度的任何想法。谢谢!
    猜你喜欢
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-05
    相关资源
    最近更新 更多