VARBYTE 類型 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

VARBYTE 類型

使用 VARBYTE、 VARBINARY或 BINARYVARYING資料欄來存放具有固定限制的可變長度二進位值。

varbyte [ (n) ]

位元組數上限 (n) 的範圍為 1 – 16,777,216。預設值為 64,000。

您可能想要使用VARBYTE資料類型的一些範例如下:

  • 聯結VARBYTE資料欄上的資料表。

  • 建立包含VARBYTE資料欄的具體化檢視。支援逐步重新整理包含VARBYTE資料欄的具體化檢視。不過,VARBYTE除了 COUNT、 MINMAX和 GROUP BY 欄上的彙總函數不支援增量重新整理。

為了確保所有位元組都是可列印的字元,Amazon Redshift 會使用十六進位格式來列印VARBYTE值。例如,下列 會將十六進位字串SQL轉換為6162二進位值。即使傳回的值是二進位值,結果仍會列印為十六進位 6162

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

Amazon Redshift 支援在 VARBYTE和 之間轉換下列資料類型:

  • CHAR

  • VARCHAR

  • SMALLINT

  • INTEGER

  • BIGINT

使用 CHAR和 VARCHAR UTF-8 格式投放時。如需 UTF-8 格式的詳細資訊,請參閱 TO_VARBYTE。從 SMALLINT、 轉換時INTEGER,會維護原始資料類型的位元組BIGINT數。也就是 的兩個位元組SMALLINT、 的四個位元組INTEGER,以及 的八個位元組BIGINT。

下列SQL陳述式會將VARCHAR字串轉換為 VARBYTE。即使傳回的值是二進位值,結果仍會列印為十六進位 616263

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

下列SQL陳述式會將欄中CHAR的值轉換為 VARBYTE。此範例會建立具有 CHAR(10) 欄 (c) 的資料表,並插入小於 10 長度的字元值。產生的轉換將結果以空格字元 (hex'20') 填入定義的欄大小。即使傳回的值是二進位值,結果仍會列印為十六進位。

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

下列SQL陳述式會將SMALLINT字串轉換為 VARBYTE。即使傳回的值是二進位值,結果仍會列印為十六進位 0005,即兩個位元組或四個十六進位字元。

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

下列SQL陳述式會將 轉換為 INTEGER VARBYTE。即使傳回的值是二進位值,結果仍會列印為十六進位 00000005,即四個位元組或八個十六進位字元。

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

下列SQL陳述式會將 轉換為 BIGINT VARBYTE。即使傳回的值是二進位值,結果仍會列印為十六進位 0000000000000005,即八個位元組或 16 個十六進位字元。

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

支援VARBYTE資料類型的 Amazon Redshift 功能包括:

搭配 Amazon Redshift 使用VARBYTE資料類型的限制

以下是將VARBYTE資料類型與 Amazon Redshift 搭配使用時的限制:

  • Amazon Redshift Spectrum 僅支援 Parquet 和 ORC 檔案的VARBYTE資料類型。

  • Amazon Redshift 查詢編輯器和 Amazon Redshift 查詢編輯器 v2 尚未完全支援VARBYTE資料類型。因此,使用VARBYTE運算式時請使用不同的SQL用戶端。

    作為使用查詢編輯器的解決方法,如果您的資料長度低於 64 KB 且內容有效 UTF-8,您可以將VARBYTE值轉換為 VARCHAR,例如:

    select to_varbyte('6162', 'hex')::varchar;
  • 您無法搭配 Python 或 Lambda 使用者定義函數 () 使用VARBYTE資料類型UDFs。

  • 您無法從HLLSKETCH資料欄建立VARBYTE資料欄或在資料VARBYTE欄APPROXIMATECOUNTDISTINCT上使用 。

  • VARBYTE 大於 1 MB 的值只能從下列檔案格式擷取:

    • Parquet

    • 文字

    • 逗號分隔值 (CSV)