Ich versuche, einen CSV-Import mit dem Befehl COPY
für einige Daten auszuführen, die ein Guillemet (»
) enthalten. Redshift beklagt, dass der Spaltenwert für die von mir definierte Spalte varchar
zu lang ist. Der Fehler in der Registerkarte "Lasten" in der Redshift-GUI zeigt dieses Zeichen als zwei Punkte an: ..
- wäre es als eins behandelt worden, hätte es in die Spalte varchar
gepasst. Es ist nicht klar, ob ein Konvertierungsfehler auftritt oder ob ein Anzeigeproblem vorliegt.Wie behandelt Redshift Guillemets?
Beim Versuch, auch schlicht INSERT
s ich laufe in seltsame Verhalten zu tun:
dev=# create table test (name varchar(3));
CREATE TABLE
dev=# insert into test values ('bla');
INSERT 0 1
3 Zeichen als 4 behandelt?
dev=# insert into test values ('bl»');
ERROR: value too long for type character varying(3)
dev=# insert into test values ('b»');
INSERT 0 1
Warum gibt char_length
2 zurück?
dev=# select char_length(name), name from test;
char_length | name
-------------+------
2 | b»
Ich habe die Kodierung des Clients und Datenbank-Codierungen geprüft und diejenigen, scheinen alle UTF8/UNICODE zu sein.
Ich dachte, dass auch auf den ersten, aber ich würde erwarten, dass ein UTF-8 ähnliche Fehler wie die auf dieser Seite aufgelistet sind, um zu sehen, wie im Gegensatz zu der "zu lang" -Fehlermeldung sah ich. –
Es könnte tatsächlich mehr als ein Zeichen für jedes Multibyte-Zeichen nehmen und Ihre Spaltengröße ist nicht genug dafür. Haben Sie versucht, die Größe Ihrer Spalte zu erhöhen, erhalten Sie immer noch das gleiche Problem? – Paladin
Beachten Sie in meinem obigen Beispiel, dass der dritte INSERT erfolgreich war, als ich nur die 2 Zeichen "b" versuchte, so dass die Spaltengröße erhöht werden konnte. Dieses Verhalten scheint einfach anders zu sein als das, was in der Dokumentation beschrieben wird, und ich versuche zu verstehen, warum das so ist. –