2017-04-06 9 views
0

.csv 파일에서로드 할 때 Teradata 테이블에 데이터를 빠르게로드하면 특수 문자 앞에 표시되는 문제가 있습니다.Teradata가 특수 문자 앞에 Â을 추가합니다.

CSV 파일

1 | 안녕하세요, £ 5.00 지불 주셔서 감사합니다, 귀하의 계정에서 인출되었습니다. | XXXX | XX | XXXX-XXX-XXX

Teradata 테이블

1 | 안녕하세요, Â £ 5.00 귀하의 계정에서 인출되어, 당신의 지불 주셔서 감사합니다. | XXXX | XX | XXXX-XXX-XXX

표 데프 inition

CREATE MULTISET TABLE DATABASE1.TABLE1 ,NO FALLBACK , 
NO BEFORE JOURNAL, 
NO AFTER JOURNAL, 
CHECKSUM = DEFAULT, 
DEFAULT MERGEBLOCKRATIO 
(
    FIELD1 VARCHAR(25) CHARACTER SET LATIN NOT CASESPECIFIC, 
    FIELD2 VARCHAR(750) CHARACTER SET LATIN NOT CASESPECIFIC, 
    FIELD3 VARCHAR(35) CHARACTER SET LATIN NOT CASESPECIFIC, 
    FIELD4 VARCHAR(35) CHARACTER SET LATIN NOT CASESPECIFIC, 
    FIELD5 VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC 
) PRIMARY INDEX (FIELD1); 

빠른로드 코드

fastload <<-EOF 
    .LOGON username/pass; 
    DATABASE DATABASE1; 

     SET RECORD VARTEXT "|"; 

     BEGIN LOADING TABLE1 
      ERRORFILES TABLE1_ERR1, 
         TABLE1_ERR2; 

     DEFINE 
      FIELD1  (VARCHAR(25)) 
      FIELD2  (VARCHAR(750)) 
      FIELD3  (VARCHAR(35)) 
      FIELD4  (VARCHAR(35)) 
      FIELD5  (VARCHAR(50)) 


     FILE=${LOAD_FILE}; 

     SHOW; 

     INSERT INTO DATABASE1.TABLE1 
     (
      FIELD1 , 
      FIELD2 , 
      FIELD3 , 
      FIELD4 , 
      FIELD5 

     ) 
     VALUES 
     (
      :FIELD1 , 
      :FIELD2 , 
      :FIELD3 , 
      :FIELD4 , 
      :FIELD5 
     ); 

    .END LOADING; 
    .LOGOFF; 
    .QUIT; 
EOF 

사람이이 문제를 해결하는 방법을 알고 있나요, 내가 솔라리스 10 빠른로드 유틸리티에서이 작업을 실행하고 v12.00.00.011

+0

로드에 잘못된 문자 집합이 사용되었을 가능성이 있습니다. Btw, 12는 veeeery 오래된 릴리스입니다. – dnoeth

+0

말해보기! 아쉽게도 변경할 수 없습니다. – Charabon

+0

CSV 파일의 문자 집합을 변환 해보십시오. 전환 옵션은이 링크를 참조하십시오 http://stackoverflow.com/questions/64860/best-way-to-convert-text-files-between-character-sets – xenodevil

답변

0

기본 문자 집합 fastload는 ANSII이고 £는 UTF8입니다. 해결책은 fastload 함수에서 세션 문자 세트를 변경하는 것입니다.

fastload <<-EOF 
    SET SESSION CHARSET 'UTF8'; 
    .LOGON username/pass; 
    DATABASE DATABASE1; 

    SET RECORD VARTEXT "|"; 

    BEGIN LOADING TABLE1 
     ERRORFILES TABLE1_ERR1, 
        TABLE1_ERR2; 

    DEFINE 
     FIELD1  (VARCHAR(25)) 
     FIELD2  (VARCHAR(750)) 
     FIELD3  (VARCHAR(35)) 
     FIELD4  (VARCHAR(35)) 
     FIELD5  (VARCHAR(50)) 


    FILE=${LOAD_FILE}; 

    SHOW; 

    INSERT INTO DATABASE1.TABLE1 
    (
     FIELD1 , 
     FIELD2 , 
     FIELD3 , 
     FIELD4 , 
     FIELD5 

    ) 
    VALUES 
    (
     :FIELD1 , 
     :FIELD2 , 
     :FIELD3 , 
     :FIELD4 , 
     :FIELD5 
    ); 

.END LOADING; 
.LOGOFF; 
.QUIT; 
EOF