Typ VARBYTE - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Typ VARBYTE

Verwenden Sie eine VARBYTE-, VARBINARY- oder BINARY VARYING-Spalte, um einen Binärwert mit variabler Länge mit einem festen Grenzwert zu speichern.

varbyte [ (n) ]

Die maximale Anzahl von Bytes (n) kann zwischen 1 und 1 024 000 liegen. Der Standardwert ist 64 000.

Hier sind einige Beispiele, in denen es empfehlenswert sein kann, einen VARBYTE-Datentyp zu verwenden:

  • Verknüpfen von Tabellen in VARBYTE-Spalten.

  • Erstellen materialisierter Ansichten, die VARBYTE-Spalten enthalten. Die inkrementelle Aktualisierung materialisierter Ansichten, die VARBYTE-Spalten enthalten, wird unterstützt. Andere Aggregationsfunktionen als COUNT, MIN und MAX sowie GROUP BY bei VARBYTE-Spalten unterstützen jedoch keine inkrementelle Aktualisierung.

Um sicherzustellen, dass alle Bytes druckbare Zeichen sind, verwendet Amazon Redshift das Hexadezimalformat zum Drucken von VARBYTE-Werten. Das folgende SQL konvertiert beispielsweise die Hexadezimalzeichenfolge 6162 in einen Binärwert. Der zurückgegebene Wert ist zwar ein Binärwert, aber die Ergebnisse werden als Hexadezimalzahl 6162 ausgedruckt.

select from_hex('6162'); from_hex ---------- 6162

Amazon Redshift unterstützt die Umwandlung von VARBYTE in die folgenden Datentypen und umgekehrt:

  • CHAR

  • VARCHAR

  • SMALLINT

  • INTEGER

  • BIGINT

Beim Umwandeln mit CHAR und VARCHAR wird das UTF-8-Format verwendet. Weitere Informationen zum UTF-8-Format finden Sie unter TO_VARBYTE. Beim Umwandeln von SMALLINT, INTEGER und BIGINT wird die Anzahl der Bytes des ursprünglichen Datentyps beibehalten. Das sind zwei Bytes bei SMALLINT, vier Bytes bei INTEGER und acht Bytes bei BIGINT.

Mit der folgenden SQL-Anweisung wird eine VARCHAR-Zeichenfolge in VARBYTE umgewandelt. Der zurückgegebene Wert ist zwar ein Binärwert, aber die Ergebnisse werden als Hexadezimalzahl 616263 ausgedruckt.

select 'abc'::varbyte; varbyte --------- 616263

Mit der folgenden SQL-Anweisung wird ein CHAR-Wert in einer Spalte in VARBYTE umgewandelt. In diesem Beispiel wird eine Tabelle mit einer CHAR(10)-Spalte (c) erstellt und es werden Zeichenwerte eingefügt, die kürzer als die Länge von 10 sind. Die resultierende Umwandlung füllt das Ergebnis mit Leerzeichen (hex'20') auf die definierte Spaltengröße auf. Der zurückgegebene Wert ist zwar ein Binärwert, aber die Ergebnisse werden als Hexadezimalzahl ausgedruckt.

create table t (c char(10)); insert into t values ('aa'), ('abc'); select c::varbyte from t; c ---------------------- 61612020202020202020 61626320202020202020

Mit der folgenden SQL-Anweisung wird eine SMALLINT-Zeichenfolge in VARBYTE umgewandelt. Der zurückgegebene Wert ist zwar ein Binärwert, aber die Ergebnisse werden als Hexadezimalzahl 0005 ausgedruckt, die zwei Bytes oder vier Hexadezimalzeichen entspricht.

select 5::smallint::varbyte; varbyte --------- 0005

Mit der folgenden SQL-Anweisung wird INTEGER in VARBYTE umgewandelt. Der zurückgegebene Wert ist zwar ein Binärwert, aber die Ergebnisse werden als Hexadezimalzahl 00000005 ausgedruckt, die vier Bytes oder acht Hexadezimalzeichen entspricht.

select 5::int::varbyte; varbyte ---------- 00000005

Mit der folgenden SQL-Anweisung wird BIGINT in VARBYTE umgewandelt. Der zurückgegebene Wert ist zwar ein Binärwert, aber die Ergebnisse werden als Hexadezimalzahl 0000000000000005 ausgedruckt, die acht Bytes oder 16 Hexadezimalzeichen entspricht.

select 5::bigint::varbyte; varbyte ------------------ 0000000000000005

Zu den Amazon-Redshift-Funktionen, die den VARBYTE-Datentyp unterstützen, gehören:

Einschränkungen bei der Verwendung des VARBYTE-Datentyps mit Amazon Redshift

Folgende Einschränkungen gelten bei der Verwendung des VARBYTE-Datentyps mit Amazon Redshift:

  • Amazon Redshift Spectrum unterstützt den Datentyp VARBYTE nur für Parquet- und ORC-Dateien.

  • Der Abfrage-Editor von Amazon Redshift und der Abfrage-Editor v2 von Amazon Redshift unterstützen den VARBYTE-Datentyp noch nicht vollständig. Verwenden Sie deshalb einen anderen SQL-Client, wenn Sie mit VARBYTE-Ausdrücken arbeiten.

    Wenn Sie dennoch den Abfrage-Editor verwenden möchten, gibt es einen Workaround: Sofern die Größe der Daten unter 64 KB liegt und der Inhalt gültiges UTF-8 ist, können Sie die VARBYTE-Werte beispielsweise in VARCHAR umwandeln:

    select to_varbyte('6162', 'hex')::varchar;
  • Sie können VARBYTE-Datentypen nicht mit benutzerdefinierten Python- oder Lambda-Funktionen (UDFs) verwenden.

  • Sie können aus einer VARBYTE-Spalte keine HLLSKETCH-Spalte erstellen oder für eine VARBYTE-Spalte APPROXIMATE COUNT DISTINCT verwenden.