2017-04-06 8 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コードが

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

ロードに間違った文字セットを使用している可能性があります。 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