ギリシャ語(»
)を含む一部のデータに対して、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と思われます。
、下記の赤方偏移のためのドキュメント・ページを参照してください。私が見た「あまりにも長い」エラーメッセージに反対する。 –
実際には、マルチバイト文字ごとに複数の文字が使用されている可能性があり、列サイズでは不十分です。あなたの列のサイズを増やしてみましたか?同じ問題がまだ発生していますか? – Paladin
上記の例では、2つの文字 'b»'を試したときに3番目のINSERTが成功したことに注意してください。この動作は、ドキュメントに記載されているものとは異なるように思えますが、なぜそれが正しいのかを理解しようとしています。 –