Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
Van toepassing op: SQL Server 2016 (13.x) en latere versies in Windows
In dit artikel wordt de toewijzing tussen externe PolyBase-gegevensbronnen en SQL Server beschreven. U kunt deze informatie gebruiken om externe tabellen correct te definiëren met de opdracht CREATE EXTERNAL TABLE Transact-SQL.
Overzicht
Wanneer u een externe tabel met PolyBase maakt, moeten de kolomdefinities, inclusief de gegevenstypen en het aantal kolommen, overeenkomen met de gegevens in de externe bestanden. Als er een onjuiste overeenkomst is, worden de bestandsrijen geweigerd bij het uitvoeren van query's op de werkelijke gegevens.
Voor externe tabellen die verwijzen naar bestanden in externe gegevensbronnen, moeten de kolom- en typedefinities worden toegewezen aan het exacte schema van het externe bestand. Wanneer u gegevenstypen definieert die verwijzen naar gegevens die zijn opgeslagen in Hadoop/Hive, gebruikt u de volgende toewijzingen tussen SQL- en Hive-gegevenstypen en cast u het type in een SQL-gegevenstype bij het selecteren. De typen omvatten alle versies van Hive, tenzij anders vermeld.
Opmerking
SQL Server biedt geen ondersteuning voor de Hive infinity-gegevenswaarde in een conversie. PolyBase mislukt met een conversiefout voor het gegevenstype.
Verwijzing naar Hadoop-typetoewijzing
| SQL-gegevenstype | .NET-gegevenstype | Hive-gegevenstype | Hadoop/Java-gegevenstype 1 | Comments |
|---|---|---|---|---|
| tinyint | Byte |
tinyint |
ByteWritable |
Alleen voor niet-ondertekende getallen. |
| smallint | Int16 |
smallint |
ShortWritable |
|
| int | Int32 |
int |
IntWritable |
|
| bigint | Int64 |
bigint |
LongWritable |
|
| bit | Boolean |
boolean |
BooleanWritable |
|
| float | Double |
double |
DoubleWritable |
|
| echte | Single |
float |
FloatWritable |
|
| geld | Decimal |
double |
DoubleWritable |
|
| kleingeld | Decimal |
double |
DoubleWritable |
|
| nchar | StringChar[] |
string |
Varchar |
|
| nvarchar | StringChar[] |
string |
Varchar |
|
| teken | StringChar[] |
string |
Varchar |
|
| varchar | StringChar[] |
string |
Varchar |
|
| binary | Byte[] |
binary |
BytesWritable |
Van toepassing op Hive 0.8 en latere versies. |
| varbinary | Byte[] |
binary |
BytesWritable |
Van toepassing op Hive 0.8 en latere versies. |
| date | DateTime |
timestamp |
TimestampWritable |
|
| smalldatetime | DateTime |
timestamp |
TimestampWritable |
|
| datetime2 | DateTime |
timestamp |
TimestampWritable |
|
| datetime | DateTime |
timestamp |
TimestampWritable |
|
| time | TimeSpan |
timestamp |
TimestampWritable |
|
| decimal | Decimal |
decimal |
BigDecimalWritable |
Van toepassing op Hive 0.11 en nieuwere versies. |
1 Hadoop wordt niet meer ondersteund in SQL Server 2022 (16.x) en latere versies.
Naslagwerk voor de mapping van Parquet- en Delta-typen
Informatie over de toewijzing van externe tabeltypen van Parquet en Delta aan SQL Server-gegevenstypen vindt u in deze sectie.
Parquet- en Delta Lake-bestanden bevatten typebeschrijvingen voor elke kolom. In de volgende tabel wordt beschreven hoe Parquet-typen worden toegewezen aan systeemeigen SQL-typen.
| Parquet-type | Parquet-logisch type (aantekening) | SQL-gegevenstype |
|---|---|---|
BOOLEAN |
bit | |
BINARY / BYTE_ARRAY |
varbinary | |
DOUBLE |
float | |
FLOAT |
echte | |
INT32 |
int | |
INT64 |
bigint | |
INT96 |
datetime2 | |
FIXED_LEN_BYTE_ARRAY |
binary | |
BINARY |
UTF8 |
varchar1 |
BINARY |
STRING |
varchar1 |
BINARY |
ENUM |
varchar1 |
FIXED_LEN_BYTE_ARRAY |
UUID |
uniqueidentifier |
BINARY |
DECIMAL |
decimal |
BINARY |
JSON |
varchar(8000)1 |
BINARY |
BSON |
Niet ondersteund |
FIXED_LEN_BYTE_ARRAY |
DECIMAL |
decimal |
BYTE_ARRAY |
INTERVAL |
Niet ondersteund |
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 |
decimal |
INT32 |
TIME (MILLIS) |
time |
INT64 |
INT(64, true) |
bigint |
INT64 |
INT(64, false) |
decimal(20,0) |
INT64 |
DECIMAL |
decimal |
INT64 |
TIME (MICROS) |
time |
INT64 |
TIME (NANOS) |
Niet ondersteund |
INT64 |
TIMESTAMP (genormaliseerd naar UTC) (MILLIS/ MICROS) |
datetime2 |
INT64 |
TIMESTAMP (niet genormaliseerd naar UTC) (MILLIS/ MICROS) |
bigint: zorg ervoor dat u de waarde expliciet aanpast bigint met de tijdzone-offset voordat u deze converteert naar een datum/tijd-waarde. |
INT64 |
TIMESTAMP (NANOS) |
Niet ondersteund |
| Complex type | LIJST | varchar(8000), geserialiseerd in JSON |
| Complex type | MAP | varchar(8000), geserialiseerd in JSON |
1 UTF-8-sortering.
Naslaginformatie voor Oracle-typetoewijzing
| Oracle-gegevenstype | SQL Server-gegevenstype |
|---|---|
FLOAT |
float |
NUMBER |
float |
NUMBER (p,s) |
Decimaal(P, S) |
LONG |
nvarchar |
BINARY_FLOAT |
echte |
BINARY_DOUBLE |
float |
CHAR |
teken |
VARCHAR2 |
varchar |
NVARCHAR2 |
nvarchar |
RAW |
varbinary |
LONG RAW |
varbinary |
BLOB |
varbinary |
CLOB |
varchar |
NCLOB |
nvarchar |
ROWID |
varchar |
UROWID |
varchar |
DATE |
datetime2 |
TIMESTAMP |
datetime2 |
Type komt niet overeen
zweven
Oracle ondersteunt drijvendekommaprecisie van 126, wat lager is dan wat SQL Server ondersteunt (53). Float (1-53) kan daarom rechtstreeks worden toegewezen, maar daarbuiten is er gegevensverlies als gevolg van afkapping.
Tijdstempel
Tijdstempel en tijdstempel met lokale tijdzone in Oracle bieden ondersteuning voor precisie van 9 fractionele seconden, terwijl SQL Server DateTime2 slechts 7 fractionele seconden precisie ondersteunt.
MongoDB-typetoewijzing
| BSON-gegevenstype | SQL Server-gegevenstype |
|---|---|
| Double | float |
| Snaar / Touwtje | nvarchar |
| Binaire gegevens | nvarchar |
| ObjectID | nvarchar |
| Booleaan | bit |
| Datum | datetime2 |
| 32-bit geheel getal | int |
| Tijdstempel | nvarchar |
| 64-bits geheel getal | bigint |
| Decimaal 128 | decimal |
| DBPointer | nvarchar |
| JavaScript | nvarchar |
| Max Key | nvarchar |
| Min-sleutel | nvarchar |
| Symbol | nvarchar |
| Reguliere expressie | nvarchar |
| Niet-gedefinieerd/NULL | nvarchar |
MongoDB gebruikt BSON-documenten om gegevensrecords op te slaan. In tegenstelling tot de vorige scenario's is BSON schemaloos en ondersteunt het insluiten van documenten en matrices in andere documenten. Dit biedt de gebruiker flexibiliteit.
Teradata-typetoewijzingsreferentie
| Teradata-gegevenstype | SQL Server-gegevenstype |
|---|---|
INTEGER |
int |
SMALLINT |
smallint |
BIGINT |
bigint |
BYTEINT |
smallint |
DECIMAL |
decimal |
FLOAT |
decimal |
BYTE |
binary |
VARBYTE |
varbinary |
BLOB |
varbinary |
CHAR |
nchar |
CLOB |
nvarchar |
VARCHAR |
nvarchar |
Graphic |
nchar |
JSON |
nvarchar |
VARGRAPHIC |
nvarchar |
DATE |
date |
TIMESTAMP |
datetime2 |
TIME |
time |
TIME WITH TIME ZONE |
time |
TIMESTAMP WITH TIME ZONE |
time |