VARBYTEtype - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

VARBYTEtype

Utilisez une BINARY VARYING colonne VARBYTEVARBINARY, ou pour stocker une valeur binaire de longueur variable avec une limite fixe.

varbyte [ (n) ]

Le nombre maximum d'octets (n) peut être compris entre 1 et 16 777 216. La valeur par défaut est 64 000.

Voici quelques exemples dans lesquels vous souhaiterez peut-être utiliser un type de VARBYTE données :

  • Joindre des tables sur VARBYTE des colonnes.

  • Création de vues matérialisées contenant des VARBYTE colonnes. L'actualisation incrémentielle des vues matérialisées contenant des VARBYTE colonnes est prise en charge. Toutefois, les fonctions d'agrégation autres que COUNTMIN, et MAX et GROUP BY sur les VARBYTE colonnes ne prennent pas en charge l'actualisation incrémentielle.

Pour garantir que tous les octets sont des caractères imprimables, Amazon Redshift utilise le format hexadécimal pour imprimer les valeurs. VARBYTE Par exemple, ce qui suit SQL convertit la chaîne hexadécimale 6162 en valeur binaire. Même si la valeur renvoyée est une valeur binaire, les résultats sont imprimés en hexadécimal 6162.

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

Amazon Redshift prend en charge le transfert entre VARBYTE les types de données suivants :

  • CHAR

  • VARCHAR

  • SMALLINT

  • INTEGER

  • BIGINT

Lors du casting avec CHAR et VARCHAR le format UTF -8 est utilisé. Pour plus d'informations sur le format UTF -8, consultezTO_VARBYTE. Lors du casting à partir de SMALLINTINTEGER, et BIGINT le nombre d'octets du type de données d'origine est conservé. Cela représente deux octets pourSMALLINT, quatre octets pour INTEGER et huit octets pourBIGINT.

L'SQLinstruction suivante transforme une VARCHAR chaîne enVARBYTE. Même si la valeur renvoyée est une valeur binaire, les résultats sont imprimés en hexadécimal 616263.

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

L'SQLinstruction suivante transforme une CHAR valeur d'une colonne en unVARBYTE. Cet exemple crée un tableau avec une colonne CHAR (10) (c) et insère des valeurs de caractères inférieures à 10. La conversion résultante bloque le résultat avec des caractères d’espace (hex’20’) à la taille de colonne définie. Même si la valeur renvoyée est une valeur binaire, les résultats sont imprimés en hexadécimal.

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

L'SQLinstruction suivante transforme une SMALLINT chaîne enVARBYTE. Même si la valeur renvoyée est une valeur binaire, les résultats sont imprimés en hexadécimal 0005, soit deux octets ou quatre caractères hexadécimaux.

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

L'SQLénoncé suivant remplace INTEGER unVARBYTE. Même si la valeur renvoyée est une valeur binaire, les résultats sont imprimés en hexadécimal 00000005, soit quatre octets ou huit caractères hexadécimaux.

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

L'SQLinstruction suivante transforme un BIGINT a enVARBYTE. Même si la valeur renvoyée est une valeur binaire, les résultats sont imprimés en hexadécimal 0000000000000005, soit 8 octets ou 16 caractères hexadécimaux.

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

Les fonctionnalités d'Amazon Redshift qui prennent en charge ce type de VARBYTE données sont les suivantes :

Limitations liées à l'utilisation du type de VARBYTE données avec Amazon Redshift

Les limites suivantes s'appliquent à l'utilisation du type de VARBYTE données avec Amazon Redshift :

  • Amazon Redshift Spectrum prend en charge VARBYTE le type de données uniquement pour Parquet ORC et les fichiers.

  • L'éditeur de requêtes Amazon Redshift et l'éditeur de requêtes Amazon Redshift v2 ne prennent pas encore totalement VARBYTE en charge le type de données. Utilisez donc un autre SQL client lorsque vous travaillez avec des VARBYTE expressions.

    Pour contourner le problème d'utilisation de l'éditeur de requêtes, si la longueur de vos données est inférieure à 64 Ko et que le contenu est valide (UTF-8), vous pouvez convertir les VARBYTE valeurs comme suitVARCHAR, par exemple :

    select to_varbyte('6162', 'hex')::varchar;
  • Vous ne pouvez pas utiliser de types de VARBYTE données avec des fonctions définies par l'utilisateur Python ou Lambda (). UDFs

  • Il est impossible de créer une HLLSKETCH colonne à partir d'une VARBYTE colonne ou de l'utiliser APPROXIMATE COUNT DISTINCT sur une VARBYTE colonne.

  • VARBYTEles valeurs supérieures à 1 Mo ne peuvent être ingérées qu'à partir des formats de fichier suivants :

    • Parquet

    • Texte

    • Valeurs séparées par des virgules () CSV