2014-09-03 16 views
1

我試圖使用BTEQ將csv文件(由|分隔)加載到Teradata表。 不幸的是,我收到了錯誤失敗2673源宗地長度與所定義的數據不匹配。任何關於這些錯誤的原因的想法是讚賞的。讓我知道你是否需要更多細節。謝謝。將文件導入到表錯誤:失敗2673

下面是表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 SCRIPT:

.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 

回答

1

我相信,因爲你在USING條款定義LOAD_DT生成此錯誤BTEQ期望在導入的文件中存在一個字段。而是遇到EOR,這會導致源包長度與您定義的不匹配的錯誤。

嘗試從您的使用條款中刪除LOAD_DT,並在您的INSERT中保留CURRENT_TIMESTAMP或將列的DEFAULT更改爲CURRENT_TIMESTAMP。

如果我可以提出一個建議,我會正確地將BIRTHDATE定義爲DATE而不是CHAR(10)

+0

我已經刪除了在csv文件中沒有匹配的使用部分中的列..但我仍然收到錯誤。 – mysticfalls 2014-09-04 05:59:06

+0

更新:我試着將LOAD_DT更改爲DATE,但它也不起作用。我做了一些測試並添加了另一個也包含日期值的字段。我使用CHAR(10)的第一個(日期)列,仍然存在錯誤。我用VARCHAR(10)秒(日期)列,它的工作原理。關於BTEQ如何轉換文件字符長度的任何想法。謝謝! – mysticfalls 2014-09-04 06:15:12