2016-05-31 5 views
0

ギリシャ語(»)を含む一部のデータに対して、COPYコマンドを使用してCSVインポートを実行しようとしています。 Redshiftは、私が定義したvarchar列では列の値が長すぎると言っています。 Redshift GUIの[読み込み]タブに表示されるエラーは、この文字を2つの点として表示します。.. - それは1つとして扱われていた場合、varcharの列に収まるでしょう。何らかの変換エラーが発生しているかどうか、または表示の問題があるかどうかは不明です。Redshiftはどのようにguillemetsを扱いますか?

私も奇妙な行動に実行平野INSERTのやろうとしている:4として扱わ

dev=# create table test (name varchar(3)); 
CREATE TABLE 
dev=# insert into test values ('bla'); 
INSERT 0 1 

3文字を?

dev=# insert into test values ('bl»'); 

ERROR: value too long for type character varying(3) 

dev=# insert into test values ('b»'); 

INSERT 0 1 

なぜchar_lengthが2を返しますか?

dev=# select char_length(name), name from test; 

char_length | name 
-------------+------ 
      2 | b» 

私はクライアントのエンコーディングとデータベースのエンコーディングをチェックしましたが、すべてUTF8/UNICODEと思われます。

答えて

0

varcharフィールドの長さを増やす必要があります。マルチバイト文字は複数の文字を使用し、varcharフィールドの定義で長さはバイトベースです。だから、あなたの特別なcharは1バイト以上を取っているかもしれません。それでも動作しない場合、私はあまりにも最初は、私はそのページなどに記載されているもののようUTF-8関連のエラーを見ることを期待だろうと思った

http://docs.aws.amazon.com/redshift/latest/dg/multi-byte-character-load-errors.html

+0

、下記の赤方偏移のためのドキュメント・ページを参照してください。私が見た「あまりにも長い」エラーメッセージに反対する。 –

+0

実際には、マルチバイト文字ごとに複数の文字が使用されている可能性があり、列サイズでは不十分です。あなたの列のサイズを増やしてみましたか?同じ問題がまだ発生していますか? – Paladin

+0

上記の例では、2つの文字 'b»'を試したときに3番目のINSERTが成功したことに注意してください。この動作は、ドキュメントに記載されているものとは異なるように思えますが、なぜそれが正しいのかを理解しようとしています。 –

関連する問題