【问题标题】:Teradata adding  in front of special charactersTeradata 在特殊字符前添加 Â
【发布时间】:2017-09-01 06:19:42
【问题描述】:

我遇到一个问题,当从 .csv 文件加载数据时,快速将数据加载到 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 <<-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 Utility v12.00.00.011 运行它

【问题讨论】:

  • 您可能使用了错误的字符集进行加载。顺便说一句,12 是一个非常古老的版本。
  • 告诉我吧!不幸的是无法改变它
  • 尝试转换CSV文件的字符集?请参阅此链接了解转换选项stackoverflow.com/questions/64860/…

标签: database character-encoding teradata


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-08-15
    • 1970-01-01
    • 2015-12-31
    • 2017-11-11
    • 2015-12-06
    • 1970-01-01
    • 2012-06-15
    • 2018-07-31
    • 2017-12-10
    相关资源
    最近更新 更多