Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к: SQL Server 2016 (13.x) и более поздних версий в Windows
В этой статье описывается сопоставление между внешними источниками данных PolyBase и SQL Server. Эти сведения можно использовать, чтобы правильно определить внешние таблицы с помощью команды Transact-SQL CREATE EXTERNAL TABLE.
Обзор
При создании внешней таблицы с PolyBase определения столбцов, включая типы данных и количество столбцов, должны соответствовать данным во внешних файлах. Если есть несоответствие, строки файлов отклоняются при запросе фактических данных.
Во внешних таблицах, которые ссылаются на файлы во внешних источниках данных, определения столбцов и типов должны точно соответствовать схеме внешнего файла. При определении типов данных, которые ссылаются на данные, хранящиеся в Hadoop или Hive, используйте следующие сопоставления типов данных SQL и Hive и приведите тип к типу данных SQL при выборе. Типы включают все версии Hive, если не указано иное.
Примечание.
SQL Server не поддерживает значение бесконечности данных Hive в любом преобразовании. PolyBase завершается ошибкой преобразования типов данных.
Сопоставление типов Hadoop
| Тип данных SQL | Тип данных .NET | Тип данных Hive | Тип данных Hadoop/Java 1 | Комментарии |
|---|---|---|---|---|
| tinyint | Byte |
tinyint |
ByteWritable |
Только для чисел без знака. |
| smallint | Int16 |
smallint |
ShortWritable |
|
| int | Int32 |
int |
IntWritable |
|
| bigint | Int64 |
bigint |
LongWritable |
|
| bit | Boolean |
boolean |
BooleanWritable |
|
| float | Double |
double |
DoubleWritable |
|
| реальный | Single |
float |
FloatWritable |
|
| деньги | Decimal |
double |
DoubleWritable |
|
| smallmoney | Decimal |
double |
DoubleWritable |
|
| nchar | StringChar[] |
string |
Varchar |
|
| nvarchar | StringChar[] |
string |
Varchar |
|
| символ | StringChar[] |
string |
Varchar |
|
| varchar | StringChar[] |
string |
Varchar |
|
| binary | Byte[] |
binary |
BytesWritable |
Применяется к Hive 0.8 и более поздним версиям. |
| varbinary | Byte[] |
binary |
BytesWritable |
Применяется к Hive 0.8 и более поздним версиям. |
| дата | DateTime |
timestamp |
TimestampWritable |
|
| smalldatetime | DateTime |
timestamp |
TimestampWritable |
|
| datetime2 | DateTime |
timestamp |
TimestampWritable |
|
| datetime | DateTime |
timestamp |
TimestampWritable |
|
| time | TimeSpan |
timestamp |
TimestampWritable |
|
| decimal | Decimal |
decimal |
BigDecimalWritable |
Применяется к Hive 0.11 и более поздним версиям. |
1 Hadoop больше не поддерживается в SQL Server 2022 (16.x) и более поздних версиях.
Справочник по сопоставлению типов Parquet и Delta
Сопоставление типов внешних таблиц Parquet и Delta с типами данных SQL Server приведено в этом разделе.
Файлы Parquet и Delta Lake содержат описания типов для каждого столбца. В приведенной ниже таблице показано, как типы Parquet сопоставляются с собственными типами SQL.
| Тип Parquet | Логический тип Parquet (заметка) | Тип данных SQL |
|---|---|---|
BOOLEAN |
bit | |
BINARY / BYTE_ARRAY |
varbinary | |
DOUBLE |
float | |
FLOAT |
реальный | |
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 |
Не поддерживается |
FIXED_LEN_BYTE_ARRAY |
DECIMAL |
decimal |
BYTE_ARRAY |
INTERVAL |
Не поддерживается |
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 |
дата |
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) |
Не поддерживается |
INT64 |
TIMESTAMP (нормализовано в формате UTC) (МИЛЛИ / МИКРОС) |
datetime2 |
INT64 |
TIMESTAMP (не нормализовано в формате UTC) (МИЛЛИ / МИКРОС) |
bigint — убедитесь, что значение bigint явно отрегулировано с помощью смещения часового пояса, прежде чем преобразовать его в значение даты и времени (datetime). |
INT64 |
TIMESTAMP (NANOS) |
Не поддерживается |
| Сложный тип | LIST | varchar(8000), сериализованный в JSON |
| Сложный тип | MAP | varchar(8000), сериализованный в JSON |
1 коллация UTF-8.
Сопоставление типов Oracle
| Тип данных Oracle | Тип данных SQL Server |
|---|---|
FLOAT |
float |
NUMBER |
float |
NUMBER (p,s) |
Десятичная(p, s) |
LONG |
nvarchar |
BINARY_FLOAT |
реальный |
BINARY_DOUBLE |
float |
CHAR |
символ |
VARCHAR2 |
varchar |
NVARCHAR2 |
nvarchar |
RAW |
varbinary |
LONG RAW |
varbinary |
BLOB |
varbinary |
CLOB |
varchar |
NCLOB |
nvarchar |
ROWID |
varchar |
UROWID |
varchar |
DATE |
datetime2 |
TIMESTAMP |
datetime2 |
Несоответствие типов
Тип с плавающей запятой
Oracle поддерживает точность чисел с плавающей запятой до 126 цифр, что выше, чем точность, поддерживаемая SQL Server (53). Таким образом, Float (1–53) можно сопоставлять напрямую, но за его пределами происходит потеря данных из-за усечения.
Метка времени
Метка времени и метка времени с локальным часовом поясом в Oracle поддерживает точность 9 дробных секунд, в то время как SQL Server DateTime2 поддерживает только 7 дробных секунд.
Сопоставление типов MongoDB
| Тип данных BSON | Тип данных SQL Server |
|---|---|
| Двойной | float |
| Строка | nvarchar |
| Двоичные данные | nvarchar |
| Код объекта | nvarchar |
| Логический | bit |
| Дата | datetime2 |
| 32-разрядное целое число | int |
| Метка времени | nvarchar |
| 64-разрядное целое число | bigint |
| Десятичная 128 | decimal |
| DBPointer | nvarchar |
| JavaScript | nvarchar |
| Максимальный ключ | nvarchar |
| Минимальный ключ | nvarchar |
| Символ | nvarchar |
| Регулярное выражение | nvarchar |
| Не определено/NULL | nvarchar |
MongoDB использует документы BSON для хранения записей данных. В отличие от предыдущих сценариев, в BSON нет схемы и поддерживается внедрение документов и массивов в другие документы. Это обеспечивает гибкость для пользователя.
Справочник по сопоставлению типов Teradata
| Тип данных Teradata | Тип данных SQL Server |
|---|---|
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 |
дата |
TIMESTAMP |
datetime2 |
TIME |
time |
TIME WITH TIME ZONE |
time |
TIMESTAMP WITH TIME ZONE |
time |