Utilisez ces tableaux de mappage lors de la migration ou de l'intégration de données entre MaxCompute et Hive, MySQL, Oracle ou Hologres. Mapper les champs vers le type cible approprié permet d'éviter la perte de données, la perte de précision et les erreurs de requête.
Mappages de types de données entre MaxCompute et Hive, MySQL et Oracle
Le tableau suivant répertorie les mappages de types de données entre MaxCompute et Hive, Oracle et MySQL. La colonne Notes met en évidence les différences de précision, les contraintes de version et les particularités comportementales à vérifier avant le mappage.
|
Type MaxCompute |
Type Hive |
Type Oracle |
Type MySQL |
Notes |
|
BOOLEAN |
BOOLEAN |
Aucun |
Aucun |
Oracle prend en charge le type de données BOOLEAN à partir de la version 23C. Dans MySQL, utilisez |
|
TINYINT |
TINYINT |
NUMBER(3,0) |
TINYINT |
Mappage sûr dans les trois systèmes. |
|
SMALLINT |
SMALLINT |
NUMBER(5,0) |
SMALLINT |
Mappage sûr dans les trois systèmes. |
|
INT |
INT |
NUMBER(7,0) |
MEDIUMINT |
Le type INT de MaxCompute (32 bits) correspond au type MEDIUMINT de MySQL (24 bits). Pour couvrir toute la plage 32 bits, mappez plutôt vers le type INT de MySQL. |
|
INT |
INT |
NUMBER(10,0) |
INT |
Mappage sûr pour la plage complète des entiers 32 bits. |
|
BIGINT |
BIGINT |
NUMBER(20,0) |
BIGINT |
Mappage sûr dans les trois systèmes. |
|
FLOAT |
FLOAT |
BINARY_FLOAT |
FLOAT |
Le type BINARY_FLOAT d'Oracle est pris en charge à partir d'Oracle Database 10g. |
|
DOUBLE |
DOUBLE |
BINARY_DOUBLE |
DOUBLE |
Le type BINARY_DOUBLE d'Oracle est pris en charge à partir d'Oracle Database 10g. |
|
DECIMAL |
DECIMAL |
NUMBER(P,S) |
DECIMAL, NUMERIC |
Vérifiez que les valeurs de précision (P) et d'échelle (S) respectent les limites du système cible avant le mappage. |
|
STRING |
STRING |
VARCHAR, VARCHAR2, CHAR, NCHAR, NVARCHAR3 |
VARCHAR, CHAR |
Le type STRING de MaxCompute n'a pas de limite de taille. Mappez-le vers le type de chaîne Oracle ou MySQL qui correspond le mieux à la longueur maximale attendue. Tous les types Oracle répertoriés sont basés sur des caractères, donc les différences de jeu de caractères ne posent généralement pas de problème. |
|
VARCHAR |
VARCHAR |
VARCHAR, VARCHAR2, CHAR, NCHAR, NVARCHAR3 |
VARCHAR |
Mêmes cibles Oracle et MySQL que pour le type STRING. Choisissez le type cible en fonction de la contrainte de longueur de la colonne source VARCHAR. |
|
STRING |
CHAR |
CHAR |
CHAR |
Les types CHAR de Hive et Oracle ont une longueur fixe et complètent les valeurs plus courtes avec des espaces. Vérifiez que les espaces de fin sont acceptables dans le système cible. |
|
BINARY |
BINARY |
RAW |
BINARY, VARBINARY |
— |
|
TIMESTAMP |
TIMESTAMP |
TIMESTAMP WITH TIME ZONE |
TIMESTAMP |
— |
|
TIMESTAMP_NTZ |
TIMESTAMP |
DATETIME |
TIMESTAMP |
Le type TIMESTAMP de Hive sans fuseau horaire est pris en charge à partir de Hive 3. |
|
DATE |
DATE |
DATE |
DATE |
— |
|
DATETIME |
DATE |
DATE |
DATETIME |
Le type DATETIME de MaxCompute est en UTC+8 et précis à la milliseconde. |
|
ARRAY |
ARRAY |
Non pris en charge |
Non pris en charge |
Les types complexes ARRAY, MAP et STRUCT de MaxCompute n'ont pas d'équivalent direct dans Oracle ou MySQL. Redéfinissez le schéma ou sérialisez ces champs dans une colonne de type chaîne ou BLOB avant la migration. |
|
MAP |
|
Non pris en charge |
Non pris en charge |
Consultez la note relative au type ARRAY. |
|
STRUCT |
STRUCT |
Non pris en charge |
Non pris en charge |
Consultez la note relative au type ARRAY. |
|
Non pris en charge |
UNION |
Non pris en charge |
Non pris en charge |
Le type UNION de Hive n'a pas d'équivalent dans MaxCompute, Oracle ou MySQL. |
|
Non pris en charge |
Non pris en charge |
BLOB |
BLOB |
Le type BLOB n'a pas d'équivalent direct dans MaxCompute. Stockez les données binaires dans une colonne BINARY ou STRING, ou conservez les données BLOB dans le système source. |
Mappages de types de données entre MaxCompute et Hologres
Le tableau suivant répertorie les mappages de types de données lors de la création d'une table externe dans Hologres à partir d'une table MaxCompute.
|
Type MaxCompute |
Type Hologres |
Version prise en charge |
Notes |
|
STRING, VARCHAR |
TEXT |
Toutes les versions de Hologres |
— |
|
BIGINT |
INT8 |
Toutes les versions de Hologres |
— |
|
INT |
INT4, INT |
Toutes les versions de Hologres |
— |
|
FLOAT |
FLOAT4, REAL |
Toutes les versions de Hologres |
— |
|
DOUBLE |
FLOAT, FLOAT8 |
Toutes les versions de Hologres |
— |
|
BOOLEAN |
BOOL |
Toutes les versions de Hologres |
— |
|
DATETIME |
TIMESTAMP WITH TIME ZONE |
Toutes les versions de Hologres |
Le type DATETIME de MaxCompute est en UTC+8 avec une précision à la milliseconde. La plage de valeurs va de 0000-01-01 à 9999-12-31. |
|
DECIMAL |
NUMERIC |
Toutes les versions de Hologres |
Si aucune précision n'est spécifiée pour le type DECIMAL de MaxCompute, la valeur par défaut est (38, 18). Lors de la création d'une table avec IMPORT FOREIGN SCHEMA, le système convertit automatiquement la précision. |
|
TIMESTAMP |
TIMESTAMP WITH TIME ZONE |
Hologres V0.8 et versions ultérieures |
Les valeurs TIMESTAMP de MaxCompute vont de 0000-01-01 00:00:00.000000000 à 9999-12-31 23:59:59.999999999 (précision à la nanoseconde). Le type TIMESTAMPTZ de Hologres est précis à la milliseconde ; Hologres convertit automatiquement la précision à la milliseconde lors de la lecture des données. |
|
CHAR(n) |
CHAR(n) (par défaut) ; TEXT (facultatif) |
Hologres V0.8 et versions ultérieures |
Le type CHAR(n) de MaxCompute est une chaîne de longueur fixe avec un n maximum de 255. Les chaînes plus courtes sont complétées par des espaces. Pour mapper vers TEXT à la place, exécutez |
|
VARCHAR(n) |
VARCHAR(n) (par défaut) ; TEXT (facultatif) |
Hologres V0.8 et versions ultérieures |
Le type VARCHAR(n) de MaxCompute est une chaîne de longueur variable. Valeurs valides de n : 1 à 65535. Pour mapper vers TEXT à la place, exécutez |
|
DATE |
DATE |
Hologres V0.8 et versions ultérieures |
— |
|
SMALLINT |
INT2 (par défaut) ; INT8 (facultatif) |
Toutes les versions de Hologres (V0.8 utilise INT4 ; V0.9 et versions ultérieures utilisent INT2) |
Pour mapper vers INT8 à la place, exécutez |
|
TINYINT |
INT2 (par défaut) ; INT8 (facultatif) |
Toutes les versions de Hologres (V0.8 utilise INT4 ; V0.9 et versions ultérieures utilisent INT2) |
Pour mapper vers INT8 à la place, exécutez |
|
CHAR |
Non pris en charge |
Non pris en charge |
— |
|
ARRAY\<INT\> |
INT4[] |
Hologres V0.8 et versions ultérieures |
— |
|
ARRAY\<BIGINT\> |
INT8[] |
Hologres V0.8 et versions ultérieures |
— |
|
ARRAY\<FLOAT\> |
FLOAT4[] |
Hologres V0.8 et versions ultérieures |
— |
|
ARRAY\<DOUBLE\> |
FLOAT8[] |
Hologres V0.8 et versions ultérieures |
— |
|
ARRAY\<BOOLEAN\> |
BOOLEAN[] |
Hologres V0.8 et versions ultérieures |
— |
|
ARRAY\<STRING\> |
TEXT[] |
Hologres V0.8 et versions ultérieures |
— |
|
BINARY |
BYTEA |
Hologres V0.9 et versions ultérieures |
— |
|
ARRAY\<TINYINT\> |
Non pris en charge |
Non pris en charge |
— |
|
ARRAY\<SMALLINT\> |
Non pris en charge |
Non pris en charge |
— |
Si une table MaxCompute contient un champ dont le type n'est pas pris en charge par Hologres, les requêtes qui ne sélectionnent pas ce champ renvoient tout de même les résultats pour tous les autres champs.
Étapes suivantes
Pour connaître les mappages entre les fonctions intégrées de MaxCompute et celles de Hive, MySQL et Oracle, consultez la rubrique Mappages entre les fonctions intégrées de MaxCompute et les fonctions intégrées de Hive, MySQL et Oracle.