Teilen über


Typzuordnung mit PolyBase

Gilt für: SQL Server (nur Windows) Wird nicht unterstützt. Azure SQL-Datenbank Nicht unterstützt. Azure Synapse Analytics Wird nicht unterstützt. Analytics Platform System (PDW)

Dieser Artikel beschreibt die Zuordnung zwischen externen PolyBase-Datenquellen und SQL Server. Sie können diese Informationen verwenden, um externe Tabellen mit dem Transact-SQL-Befehl CREATE EXTERNAL TABLE richtig zu definieren.

Übersicht

Beim Erstellen einer externen Tabelle mit PolyBase müssen die Spaltendefinitionen, einschließlich der Datentypen und die Anzahl der Spalten mit den Daten in externen Dateien übereinstimmen. Wenn ein Konflikt besteht, werden die Zeilen der Datei beim Abfragen der tatsächlichen Daten zurückgewiesen.

Für externe Tabellen, die auf Dateien in externen Datenquellen verweisen, müssen die Spalten- und Typdefinitionen dem genauen Schema der externen Datei zugeordnet werden. Beim Definieren von Datentypen, die auf Daten verweisen, die in Hadoop/Hive gespeichert sind, verwenden Sie die folgenden Zuordnungen zwischen Datentypen von SQL und Hive und wandeln Sie den Typ in einen SQL-Datentyp um, wenn Sie daraus auswählen. Die Typen umfassen alle Versionen von Hive, sofern nicht anders angegeben.

Hinweis

SQL Server unterstützt den Datenwert unendlich von Hive nicht in beliebigen Konvertierungen. PolyBase schlägt mit einem Datentypkonvertierungsfehler fehl.

Hadoop-Typzuordnungsverweis

SQL-Datentyp .NET-Datentyp Hive-Datentyp Hadoop/Java-Datentyp1 Kommentare
TINYINT Byte tinyint ByteWritable Nur für unsignierte Zahlen.
smallint Int16 smallint ShortWritable
int Int32 int IntWritable
bigint Int64 bigint LongWritable
bit Boolean boolean BooleanWritable
float Double double DoubleWritable
real Single float FloatWritable
money Decimal double DoubleWritable
SMALLMONEY Decimal double DoubleWritable
NCHAR String

Char[]
Zeichenfolge Varchar
NVARCHAR String

Char[]
Zeichenfolge Varchar
char String

Char[]
Zeichenfolge Varchar
varchar String

Char[]
Zeichenfolge Varchar
binary Byte[] binary BytesWritable Gilt für Hive 0.8 und höher.
varbinary Byte[] binary BytesWritable Gilt für Hive 0.8 und höher.
date Datetime timestamp TimestampWritable
smalldatetime DateTime timestamp TimestampWritable
datetime2 DateTime timestamp TimestampWritable
datetime DateTime timestamp TimestampWritable
time TimeSpan Zeitstempel TimestampWritable
Decimal Decimal Decimal BigDecimalWritable Gilt für Hive 0.11 und höher.

1 Beginnend mit SQL Server 2022 (16.x) wird Hadoop nicht mehr unterstützt.

Referenz zur Zuordnung von Parquet und Delta-Typen

Die Zuordnung externer Tabellentypen für Parquet und Delta zu SQL Server-Datentypen ist unten aufgeführt.

Parquet- und Delta Lake-Dateien enthalten Typbeschreibungen für die einzelnen Spalten. In der folgenden Tabelle wird beschrieben, wie Parquet-Typen den nativen SQL-Typen zugeordnet werden.

Parquet-Typ Logischer Parquet-Typ (Anmerkung) SQL-Datentyp
BOOLEAN bit
BINARY/BYTE_ARRAY varbinary
Double float
GLEITKOMMAZAHL real
INT32 INT
INT64 BIGINT
INT96 datetime2
FIXED_LEN_BYTE_ARRAY BINARY
BINARY UTF8 varchar *(UTF8-Sortierung)
BINARY STRING varchar *(UTF8-Sortierung)
BINARY ENUM varchar *(UTF8-Sortierung)
FIXED_LEN_BYTE_ARRAY UUID UNIQUEIDENTIFIER
BINARY DECIMAL Decimal
BINARY JSON varchar(8000) *(UTF8-Sortierung)
BINARY BSON Nicht unterstützt
FIXED_LEN_BYTE_ARRAY DECIMAL Decimal
BYTE_ARRAY INTERVAL Nicht unterstützt
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) Nicht unterstützt
INT64 TIMESTAMP (normalisiert in UTC) (MILLIS/MICROS) datetime2
INT64 TIMESTAMP (nicht normalisiert in UTC) (MILLIS/MICROS) bigint: Stellen Sie sicher, dass Sie den bigint-Wert explizit um den Offset der Zeitzone anpassen, bevor Sie ihn in einen datetime-Wert konvertieren.
INT64 TIMESTAMP (NANOS) Nicht unterstützt
Komplexer Typ AUFLISTEN varchar(8000), serialisiert in JSON
Komplexer Typ MAP varchar(8000), serialisiert in JSON

Oracle-Typzuordnungsverweis

Oracle-Datentyp SQL Server-Typ
Gleitkomma Gleitkomma
NUMBER Gleitkomma
NUMBER (p,s) Decimal (p, s)
LONG Nvarchar
BINARY_FLOAT Echt
BINARY_DOUBLE Gleitkomma
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

Typenkonflikt:

Float: Oracle unterstützt eine Gleitkommagenauigkeit von 126, was niedriger ist als die von SQL-Server (53). Daher kann Float (1-53) direkt zugeordnet werden, aber darüber hinaus kommt es zu Datenverlust durch Abschneidung.

Zeitstempel:
„Timestamp“ und „Timestamp with local timezone“ in Oracle unterstützen eine Genauigkeit in Sekundenbruchteilen von 9, während SQL Server bei „DateTime2“ nur eine Genauigkeit in Sekundenbruchteilen von 7 unterstützt.

MongoDB-Typzuordnung

BSON-Datentyp SQL Server-Typ
Double Gleitkomma
String Nvarchar
Binärdaten Nvarchar
ObjectID Nvarchar
Boolean bit
Datum Datetime2
32-bit integer Int
Timestamp Nvarchar
64-Bit-Ganzzahl BigInt
Decimal 128 Decimal
DBPointer Nvarchar
JavaScript Nvarchar
Max Key Nvarchar
Min Key Nvarchar
Symbol Nvarchar
Regular Expression Nvarchar
Undefined/NULL Nvarchar

MongoDB verwendet BSON-Dokumente zur Speicherung von Datensätzen. Im Gegensatz zu den vorherigen Szenarios weist BSON kein Schema auf und unterstützt das Einbetten von Dokumenten und Arrays in andere Dokumente. Dadurch ist der Benutzer flexibler.

Teradata-Typzuordnungsverweis

Teradata-Datentyp SQL Server-Typ
INTEGER Int
SMALLINT SmallInt
BIGINT BigInt
BYTEINT SmallInt
DECIMAL Decimal
FLOAT Decimal
BYTE Binär
VARBYTE Varbinary
BLOB varbinary
CHAR Nchar
CLOB Nvarchar
VARCHAR Nvarchar
Graphic Nchar
JSON Nvarchar
VARGRAPHIC Nvarchar
DATE Date
TIMESTAMP Datetime2
TIME Zeit
TIME WITH TIME ZONE Zeit
TIMESTAMP WITH TIME ZONE Zeit

Nächste Schritte

Weitere Informationen zur Verwendung finden Sie im Transact-SQL-Referenzartikel für CREATE EXTERNAL TABLE.