Typzuordnung mit PolyBase
Gilt für: SQL Server (nur Windows) Azure SQL-Datenbank Azure Synapse Analytics 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.
Überblick
Wenn Sie eine externe Tabelle mit PolyBase erstellen, müssen die Spaltendefinitionen, einschließlich der Datentypen und der Anzahl von Spalten, den Daten in den externen Dateien entsprechen. Wenn ein Konflikt auftritt, werden die Dateizeilen beim Abfragen der tatsächlichen Daten abgelehnt.
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 | timestamp | TimestampWritable | |
Decimal | Decimal | Decimal | BigDecimalWritable | Gilt für Hive 0.11 und höher. |
1 Ab SQL Server 2022 (16.x) wird Hadoop nicht mehr unterstützt.
Referenz zur Zuordnung von Parkett und Delta-Typen
Die Zuordnung externer Tabellentypen für Parkett 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 |
---|---|
Float | Float |
NUMBER | Float |
NUMBER (p,s) | Decimal (p, s) |
LONG | Nvarchar |
BINARY_FLOAT | Echt |
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 |
Typenkonflikt:
Float: Oracle unterstützt gleitkommagenauigkeit von 126, was niedriger als sql Server unterstützt (53). Daher kann Float (1-53) direkt zugeordnet werden, aber darüber hinaus kommt es zu Datenverlust durch Abschneidung.
Zeitstempel:
Zeitstempel und Zeitstempel mit lokaler Zeitzone in Oracle unterstützen 9 Bruchteile Sekunden Genauigkeit, während SQL Server DateTime2 nur 7 Sekunden Genauigkeit unterstützt.
MongoDB-Typzuordnung
BSON-Datentyp | SQL Server-Typ |
---|---|
Double | Float |
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 | Dezimal |
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 |
Nächste Schritte
Weitere Informationen zur Verwendung finden Sie im Transact-SQL-Referenzartikel für CREATE EXTERNAL TABLE.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für