Teradata在特殊字符前添加Â

问题描述:

我遇到了以下问题:从.csv文件加载时,数据快速加载到Teradata Table导致Â出现在特殊字符前面。Teradata在特殊字符前添加Â

CSV文件

1 |您好,£5.00已经从您的账户中扣除,感谢您的付款|。XXXX | XX | XXXX-XXX-XXX

Teradata表

1 |你好,£5.00已经从您的账户中扣除,感谢您的付款|。XXXX | XX | XXXX-XXX-XXX

表防守从头

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代码

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 

有谁知道如何解决这个问题,我是从的Solaris 10 Fastload实用程序运行此v12.00.00.011

+0

您可能使用错误的字符集来装载。顺便说一句,12是veeeery旧版本。 – dnoeth

+0

告诉我有关它!不幸的是不能改变它 – Charabon

+0

尝试转换CSV文件的字符集?看到这个链接转换选项http://*.com/questions/64860/best-way-to-convert-text-files-between-character-sets – xenodevil

默认字符集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