Mappage des types avec PolyBase
S’applique à : SQL Server (Windows uniquement) Azure SQL Database Azure Synapse Analytics Analytics Platform System (PDW)
Cet article décrit le mappage entre des sources de données externes PolyBase et SQL Server. Vous pouvez utiliser ces informations pour définir correctement les tables externes avec la commande Transact-SQL CREATE EXTERNAL TABLE.
Vue d’ensemble
Lorsque vous créez une table externe avec PolyBase, les définitions de colonnes, y compris les types de données et le nombre de colonnes, doivent correspondre aux données dans les fichiers externes. S’il existe une incompatibilité, les lignes de fichier sont rejetées lors de l’interrogation des données réelles.
Pour les tables externes qui référencent des fichiers provenant de sources de données externes, les définitions de colonne et de type doivent correspondre exactement au schéma du fichier externe. Lorsque vous définissez des types de données qui référencent des données stockées dans Hadoop/Hive, utilisez les mappages suivants entre les types de données SQL et Hive, et castez le type en un type de données SQL lorsque vous sélectionnez des données. Les types incluent toutes les versions de Hive, sauf indication contraire.
Remarque
SQL Server ne prend pas en charge la valeur de données infinie Hive lors des conversions. Si vous l’utilisez, PolyBase échoue et émet une erreur de conversion de type de données.
Informations de référence sur le mappage des types Hadoop
Type de données SQL | Type de données .NET | Type de données Hive | Hadoop/Java Data Type1 | Commentaires |
---|---|---|---|---|
TINYINT | Byte | tinyint | ByteWritable | Pour les nombres non signés. |
SMALLINT | Int16 | smallint | ShortWritable | |
int | Int32 | int | IntWritable | |
bigint | Int64 | bigint | LongWritable | |
bit | Boolean | booléen | BooleanWritable | |
virgule flottante | Double | double | DoubleWritable | |
real | Unique | virgule flottante | FloatWritable | |
money | Decimal | double | DoubleWritable | |
SMALLMONEY | Décimal | double | DoubleWritable | |
NCHAR | String Char[] |
string | Varchar | |
NVARCHAR | String Char[] |
string | Varchar | |
char | String Char[] |
string | Varchar | |
varchar | String Char[] |
string | Varchar | |
binary | Byte[] | binary | BytesWritable | S’applique à Hive 0.8 et versions ultérieures |
varbinary | Byte[] | binary | BytesWritable | S’applique à Hive 0.8 et versions ultérieures |
date | DateTime | timestamp | TimestampWritable | |
smalldatetime | Date/Heure | timestamp | TimestampWritable | |
datetime2 | Date/Heure | timestamp | TimestampWritable | |
DATETIME | Date/Heure | timestamp | TimestampWritable | |
time | TimeSpan | timestamp | TimestampWritable | |
Décimal | Decimal | decimal | BigDecimalWritable | S’applique à Hive 0.11 et versions ultérieures |
1 Depuis SQL Server 2022 (16.x) Hadoop n’est plus pris en charge.
Informations de référence sur le mappage de type Parquet et Delta
Le mappage de type de table externe Parquet et Delta aux types de données SQL Server est répertorié ci-dessous.
Les fichiers Parquet et Delta Lake contiennent des descriptions de type pour chaque colonne. Le tableau suivant explique comment les types Parquet sont mappés aux types SQL natifs.
Type Parquet | Type logique Parquet (annotation) | Type de données SQL |
---|---|---|
BOOLEAN | bit | |
BINARY / BYTE_ARRAY | varbinary | |
DOUBLE | float | |
FLOAT | real | |
INT32 | int | |
INT64 | bigint | |
INT96 | datetime2 | |
FIXED_LEN_BYTE_ARRAY | binary | |
BINARY | UTF8 | varchar *(classement UTF8) |
BINARY | STRING | varchar *(classement UTF8) |
BINARY | ENUM | varchar *(classement UTF8) |
FIXED_LEN_BYTE_ARRAY | UUID | UNIQUEIDENTIFIER |
BINARY | DECIMAL | Décimal |
BINARY | JSON | varchar(8000) *(classement UTF8) |
BINARY | BSON | Non pris en charge |
FIXED_LEN_BYTE_ARRAY | DECIMAL | Décimal |
BYTE_ARRAY | INTERVAL | Non pris en charge |
INT32 | INT(8, true) | SMALLINT |
INT32 | INT(16, true) | SMALLINT |
INT32 | INT(32, true) | int |
INT32 | INT(8, false) | TINYINT |
INT32 | INT(16, false) | int |
INT32 | INT(32, false) | bigint |
INT32 | DATE | Date |
INT32 | DECIMAL | Décimal |
INT32 | TIME (MILLIS) | time |
INT64 | INT(64, true) | bigint |
INT64 | INT(64, false) | decimal(20,0) |
INT64 | DECIMAL | Décimal |
INT64 | TIME (MICROS) | time |
INT64 | TIME (NANOS) | Non pris en charge |
INT64 | TIMESTAMP (normalisé en UTC) (MILLIS / MICROS) | datetime2 |
INT64 | TIMESTAMP (non normalisé en UTC) (MILLIS / MICROS) | bigint : veillez à ajuster la valeur bigint explicitement avec le décalage de fuseau horaire avant de la convertir en valeur datetime. |
INT64 | TIMESTAMP (NANOS) | Non pris en charge |
Type complexe | Liste | varchar(8000), sérialisé en JSON |
Type complexe | MAP | varchar(8000), sérialisé en JSON |
Informations de référence sur le mappage des types Oracle
Type de données Oracle | Type SQL Server |
---|---|
Float | Float |
NUMBER | Float |
NUMBER (p,s) | Decimal (p, s) |
LONG | Nvarchar |
BINARY_FLOAT | Real |
BINARY_DOUBLE | Float |
CHAR | Char |
VARCHAR2 | Varchar |
NVARCHAR2 | Nvarchar |
RAW | Varbinary |
LONG RAW | Varbinary |
BLOB | Varbinary |
CLOB | Varchar |
NCLOB | Nvarchar |
ROWID | Varchar |
UROWID | Varchar |
DATE | Datetime2 |
timestamp | Datetime2 |
Incompatibilité des types
Float : Oracle prend en charge la précision à virgule flottante de 126, qui est inférieure à ce que SQL Server prend en charge (53). Ainsi, Float (1-53) peut être mappé directement. Au delà, des données sont perdues en raison de la troncation.
TimeStamp :
L’horodatage et l’horodatage avec fuseau horaire local dans Oracle prennent en charge une précision de 9 fractions de seconde, tandis que SQL Server DateTime2 ne prend en charge que 7 secondes fractionnaires de précision.
Mappage de type MongoDB
Type de données BSON | Type SQL Server |
---|---|
Double | Float |
Chaîne | Nvarchar |
Données binaires | Nvarchar |
ID de l'objet | Nvarchar |
Boolean | bit |
Date | Datetime2 |
Entier de 32 bits | Int |
Horodateur | Nvarchar |
Entier 64 bits | BigInt |
Decimal 128 | Décimal |
DBPointer | Nvarchar |
JavaScript | Nvarchar |
Clé maximale | Nvarchar |
Clé minimale | Nvarchar |
Symbole | Nvarchar |
Expression régulière | Nvarchar |
Non défini/NULL | Nvarchar |
MongoDB utilise les documents BSON pour stocker les enregistrements de données. Contrairement aux scénarios précédents, BSON est sans schéma et prend en charge l’incorporation de documents et de tableaux dans d’autres documents. Cela apporte plus de souplesse à l’utilisateur.
Informations de référence sur le mappage des types Teradata
Type de données Teradata | Type SQL Server |
---|---|
INTEGER | Int |
SMALLINT | SmallInt |
BIGINT | BigInt |
BYTEINT | SmallInt |
DECIMAL | Decimal |
FLOAT | Décimal |
BYTE | Binaire |
VARBYTE | Varbinary |
BLOB | varbinary |
CHAR | Nchar |
CLOB | Nvarchar |
VARCHAR | Nvarchar |
Graphic | Nchar |
JSON | Nvarchar |
VARGRAPHIC | Nvarchar |
DATE | Date |
TIMESTAMP | Datetime2 |
TIME | Temps |
TIME WITH TIME ZONE | Temps |
TIMESTAMP WITH TIME ZONE | Temps |
Étapes suivantes
Pour plus d’informations sur l’utilisation de ces paramètres, consultez l’article de référence sur Transact-SQL pour CREATE EXTERNAL TABLE.
Commentaires
https://aka.ms/ContentUserFeedback.
Prochainement : Tout au long de l'année 2024, nous supprimerons progressivement les GitHub Issues en tant que mécanisme de retour d'information pour le contenu et nous les remplacerons par un nouveau système de retour d'information. Pour plus d’informations, voir:Soumettre et afficher des commentaires pour