Сопоставление типов с помощью PolyBaseType mapping with PolyBase

ОБЛАСТЬ ПРИМЕНЕНИЯ:  даSQL Server (только в Windows) нетБаза данных SQL Azure нетХранилище данных SQL AzureнетParallel Data Warehouse APPLIES TO: yesSQL Server (Windows only) noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

В этой статье описывается сопоставление между внешними источниками данных PolyBase и SQL Server.This article describes the mapping between PolyBase external data sources and SQL Server. Эти сведения можно использовать, чтобы правильно определить внешние таблицы с помощью команды Transact-SQL CREATE EXTERNAL TABLE.You can use this information to correctly define external tables with the CREATE EXTERNAL TABLE Transact-SQL command.

ОбзорOverview

При создании внешней таблицы с помощью PolyBase определения столбцов, включая типы данных и количество столбцов, должны соответствовать данным во внешних файлах.When creating and external table with PolyBase, the column definitions, including the data types and number of columns, must match the data in the external files. В случае несоответствия при запросе данных строки файла отклоняются.If there is a mismatch, the file rows are rejected when querying the actual data.

Во внешних таблицах, которые ссылаются на файлы во внешних источниках данных, определения столбцов и типов должны точно соответствовать схеме внешнего файла.For external tables that reference files in external data sources, the column and type definitions must map to the exact schema of the external file. При определении типов данных, которые ссылаются на данные, хранящиеся в Hadoop или Hive, используйте следующие сопоставления типов данных SQL и Hive и приведите тип к типу данных SQL при выборе.When defining data types that reference data stored in Hadoop/Hive, use the following mappings between SQL and Hive data types and cast the type into a SQL data type when selecting from it. Типы включают все версии Hive, если не указано иное.The types include all versions of Hive unless stated otherwise.

Примечание

SQL Server не поддерживает тип данных Hive infinity в любых преобразованиях.SQL Server does not support the Hive infinity data value in any conversion. PolyBase будет завершаться ошибкой преобразования типов данных.PolyBase will fail with a data type conversion error.

Сопоставление типов HadoopHadoop Type mapping reference

Тип данных SQLSQL Data Type Тип данных .NET.NET Data Type Тип данных HiveHive Data Type Тип данных Hadoop/JavaHadoop/Java Data Type КомментарииComments
TINYINTtinyint ByteByte TINYINTtinyint ByteWritableByteWritable Только для чисел без знака.For unsigned numbers only.
smallintsmallint Int16Int16 smallintsmallint ShortWritableShortWritable
INTint Int32Int32 INTint IntWritableIntWritable
BIGINTbigint Int64Int64 BIGINTbigint LongWritableLongWritable
bitbit Логическое значениеBoolean booleanboolean BooleanWritableBooleanWritable
FLOATfloat DoubleDouble doubledouble DoubleWritableDoubleWritable
REALreal ОдинSingle FLOATfloat FloatWritableFloatWritable
moneymoney DecimalDecimal doubledouble DoubleWritableDoubleWritable
SMALLMONEYsmallmoney DecimalDecimal doubledouble DoubleWritableDoubleWritable
NCHARnchar StringString

Char[]Char[]
строкаstring VarcharVarchar
NVARCHARnvarchar StringString

Char[]Char[]
строкаstring VarcharVarchar
char;char StringString

Char[]Char[]
строкаstring VarcharVarchar
varcharvarchar StringString

Char[]Char[]
строкаstring VarcharVarchar
BINARYbinary Byte[]Byte[] BINARYbinary BytesWritableBytesWritable Применяется к Hive 0.8 и более поздней версии.Applies to Hive 0.8 and later.
varbinaryvarbinary Byte[]Byte[] BINARYbinary BytesWritableBytesWritable Применяется к Hive 0.8 и более поздней версии.Applies to Hive 0.8 and later.
Датаdate DateTimeDateTime TIMESTAMPtimestamp TimestampWritableTimestampWritable
smalldatetimesmalldatetime DateTimeDateTime TIMESTAMPtimestamp TimestampWritableTimestampWritable
datetime2datetime2 DateTimeDateTime TIMESTAMPtimestamp TimestampWritableTimestampWritable
DATETIMEdatetime DateTimeDateTime TIMESTAMPtimestamp TimestampWritableTimestampWritable
timetime TimeSpanTimeSpan TIMESTAMPtimestamp TimestampWritableTimestampWritable
Decimaldecimal DecimalDecimal Decimaldecimal BigDecimalWritableBigDecimalWritable Применяется к Hive 0.11 и более поздней версии.Applies to Hive0.11 and later.

Сопоставление типов OracleOracle Type mapping reference

Тип данных OracleOracle data type Тип SQL ServerSQL Server type
floatFloat floatFloat
NUMBERNUMBER DecimalDecimal
LONGLONG nvarcharNvarchar
BINARY_FLOATBINARY_FLOAT RealReal
BINARY_DOUBLEBINARY_DOUBLE floatFloat
CHARCHAR CHARChar
VARCHAR2VARCHAR2 VarcharVarchar
NVARCHAR2NVARCHAR2 nvarcharNvarchar
RAWRAW VarbinaryVarbinary
LONG RAWLONG RAW VarbinaryVarbinary
BLOBBLOB VarbinaryVarbinary
CLOBCLOB VarcharVarchar
NCLOBNCLOB nvarcharNvarchar
ROWIDROWID VarcharVarchar
UROWIDUROWID VarcharVarchar
DATEDATE Datetime2Datetime2
timestampTIMESTAMP Datetime2Datetime2

Несоответствие типовType mismatch

Число с плавающей запятой: Oracle поддерживает числа с плавающей запятой с точностью до 126. SQL Server поддерживает лучшую точность — 53.Float: Oracle supports floating point precision of 126, which is lower than what SQL server supports (53). Таким образом Float (1–53) можно сопоставить напрямую, но при этом существует потеря данных из-за усечения.Therefore, Float (1-53) can be mapped directly, but beyond that, there is data loss due to truncation.

Метка времени: Timestamp и Timestamp with local timezone в Oracle поддерживают точность секунды до 9 десятичных цифр после запятой, тогда как DateTime2 в SQL Server поддерживает точность только до 7.Timestamp: Timestamp and Timestamp with local timezone in Oracle supports 9 fractional seconds precision whereas, SQL server DateTime2 supports only 7 fractional seconds precision.

Сопоставление типов MongoDBMongoDB Type Mapping

Тип данных BSONBSON data type Тип SQL ServerSQL Server type
DoubleDouble floatFloat
StringString nvarcharNvarchar
Двоичные данныеBinary data nvarcharNvarchar
Идентификатор объекта.Object ID nvarcharNvarchar
Логическое значениеBoolean bitBit
ДатаDate Datetime2Datetime2
32-разрядное целое число32-bit integer intInt
Отметка времениTimestamp nvarcharNvarchar
64-разрядное целое число64-bit integer BigIntBigInt
Decimal 128Decimal 128 DecimalDecimal
DBPointerDBPointer nvarcharNvarchar
JavascriptJavascript nvarcharNvarchar
Максимальный ключMax Key nvarcharNvarchar
Минимальный ключMin Key nvarcharNvarchar
СимволSymbol nvarcharNvarchar
Регулярное выражениеRegular Expression nvarcharNvarchar
Не определено/NULLUndefined/NULL nvarcharNvarchar

MongoDB использует документы BSON для хранения записей данных.MongoDB uses BSON documents to store data records. В отличие от предыдущих сценариев, в BSON нет схемы и поддерживается внедрение документов и массивов в другие документы.Unlike the previous scenarios, BSON is schema-less and supports embedding of documents and arrays within other documents. Это обеспечивает гибкость для пользователя.This provides flexibility to the user.

Сопоставление типов TeradataTeradata Type mapping reference

Тип данных TeradataTeradata data type Тип SQL ServerSQL Server type
INTEGERINTEGER intInt
SMALLINTSMALLINT SmallIntSmallInt
bigintBIGINT BigIntBigInt
BYTEINTBYTEINT SmallIntSmallInt
DECIMALDECIMAL DecimalDecimal
FLOATFLOAT DecimalDecimal
BYTEBYTE ДвоичныйBinary
VARBYTEVARBYTE VarbinaryVarbinary
BLOBBLOB varbinaryvarbinary
CHARCHAR NcharNchar
CLOBCLOB nvarcharNvarchar
VARCHARVARCHAR nvarcharNvarchar
GraphicGraphic NcharNchar
JSONJSON nvarcharNvarchar
VARGRAPHICVARGRAPHIC nvarcharNvarchar
DATEDATE ДатаDate
timestampTIMESTAMP Datetime2Datetime2
TIMETIME TimeTime
TIME WITH TIME ZONETIME WITH TIME ZONE TimeTime
TIMESTAMP WITH TIME ZONETIMESTAMP WITH TIME ZONE TimeTime

Следующие шагиNext steps

Дополнительные сведения об использовании сопоставления см. в справочнике по Transact-SQL для CREATE EXTERNAL TABLE (Transact-SQL).For more information on how this is used, see Transact-SQL reference article for CREATE EXTERNAL TABLE.