Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

Modifier le type de données d'une colonne

Mode de mise au point

Sur cette page

Modifier le type de données d'une colonne - Amazon Athena

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.

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.

Vous souhaiterez peut-être utiliser un autre type de colonne lorsque le type existant ne peut plus contenir la quantité d'informations requise. Par exemple, les valeurs d'une colonne ID peuvent dépasser la taille du type de données INT et nécessiter l'utilisation du type de données BIGINT.

Considérations

Lorsque vous envisagez d'utiliser un autre type de données pour une colonne, tenez compte des points suivants :

  • Dans la plupart des cas, vous ne pouvez pas modifier directement le type de données d'une colonne. À la place, vous recréez la table Athena et définissez la colonne avec le nouveau type de données.

  • Seuls certains types de données peuvent être lus dans d'autres types de données. Consultez la table de cette section pour les types de données qui peuvent traités de cette manière.

  • Pour les données dans Parquet etORC, vous ne pouvez pas utiliser un type de données différent pour une colonne si la table n'est pas partitionnée.

  • Pour les tables partitionnées dans Parquet andORC, le type de colonne d'une partition peut être différent du type de colonne d'une autre partition, et Athena CAST choisira le type souhaité, si possible. Pour plus d’informations, veuillez consulter Évitez les erreurs de non-concordance des schémas pour les tables comportant des partitions.

  • Pour les tables créées à l'aide de l'instruction LazySimpleSerDeonly, il est possible d'utiliser l'ALTER TABLE REPLACE COLUMNSinstruction pour remplacer les colonnes existantes par un type de données différent, mais toutes les colonnes existantes que vous souhaitez conserver doivent également être redéfinies dans l'instruction, sinon elles seront supprimées. Pour de plus amples informations, veuillez consulter ALTER TABLE REPLACE COLUMNS.

  • Pour les tables Apache Iceberg uniquement, vous pouvez utiliser l'instruction ALTER TABLE CHANGE COLUMNpour modifier le type de données d'une colonne. ALTER TABLE REPLACE COLUMNS n'est pas pris en charge pour les tables Iceberg. Pour de plus amples informations, veuillez consulter Schéma de table Evolve Iceberg.

Important

Nous vous recommandons vivement de tester et de vérifier vos requêtes avant d'effectuer des conversions de type de données. Si Athena ne peut pas utiliser le type de données cible, la requête CREATE TABLE risque d'échouer.

Utiliser des types de données compatibles

Dans la mesure du possible, utilisez des types de données compatibles. Le tableau suivant répertorie les types de données qui peuvent être traités comme d'autres types de données :

Type de données d'origine Types de données cibles disponibles
STRING BYTE, TINYINT, SMALLINT, INT, BIGINT
BYTE TINYINT, SMALLINT, INT, BIGINT
TINYINT SMALLINT, INT, BIGINT
SMALLINT INT, BIGINT
INT BIGINT
FLOAT DOUBLE

L'exemple suivant utilise l'instruction CREATE TABLE de la table orders_json d'origine pour créer une nouvelle table appelée orders_json_bigint. La nouvelle table utilise BIGINT plutôt que INT comme type de données pour la colonne `o_shippriority`.

CREATE EXTERNAL TABLE orders_json_bigint ( `o_orderkey` int, `o_custkey` int, `o_orderstatus` string, `o_totalprice` double, `o_orderdate` string, `o_orderpriority` string, `o_clerk` string, `o_shippriority` BIGINT ) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' LOCATION 's3://amzn-s3-demo-bucket/orders_json';

La requête suivante s'exécute correctement, comme dans la requête SELECT d'origine, avant le changement du type de données :

Select * from orders_json LIMIT 10;
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.