Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL Server 2016 (13.x) e versões posteriores no Windows
Este artigo descreve o mapeamento entre fontes de dados externas do PolyBase e o SQL Server. Você pode usar essas informações para definir corretamente tabelas externas com o CREATE EXTERNAL TABLE comando Transact-SQL.
Visão geral
Quando você cria uma tabela externa com o PolyBase, as definições de coluna, incluindo os tipos de dados e o número de colunas, devem corresponder aos dados nos arquivos externos. Se houver uma incompatibilidade, as linhas do arquivo serão rejeitadas ao consultar os dados reais.
Para tabelas externas que referenciam arquivos em fontes de dados externas, as definições de coluna e tipo devem ser mapeadas para o esquema exato do arquivo externo. Ao definir tipos de dados que referenciam dados armazenados no Hadoop/Hive, use os mapeamentos a seguir entre tipos de dados SQL e Hive e converta o tipo em um tipo de dados SQL ao selecionar uma opção nele. Os tipos incluem todas as versões do Hive, a menos que indicado de outra forma.
Observação
O SQL Server não dá suporte ao valor de dados infinito do Hive em nenhuma conversão. O PolyBase falha com um erro de conversão de tipo de dados.
Referência de mapeamento de tipos do Hadoop
| Tipo de dados SQL | Tipo de dados do .NET | Tipo de dados do Hive | Tipo de dados Hadoop/Java 1 | Comentários |
|---|---|---|---|---|
| tinyint | Byte |
tinyint |
ByteWritable |
Apenas para números sem sinal. |
| 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 | StringChar[] |
string |
Varchar |
|
| nvarchar | StringChar[] |
string |
Varchar |
|
| char | StringChar[] |
string |
Varchar |
|
| varchar | StringChar[] |
string |
Varchar |
|
| binário | Byte[] |
binary |
BytesWritable |
Aplica-se ao Hive 0.8 e versões posteriores. |
| varbinary | Byte[] |
binary |
BytesWritable |
Aplica-se ao Hive 0.8 e versões posteriores. |
| date | DateTime |
timestamp |
TimestampWritable |
|
| smalldatetime | DateTime |
timestamp |
TimestampWritable |
|
| datetime2 | DateTime |
timestamp |
TimestampWritable |
|
| datetime | DateTime |
timestamp |
TimestampWritable |
|
| Tempo | TimeSpan |
timestamp |
TimestampWritable |
|
| decimal | Decimal |
decimal |
BigDecimalWritable |
Aplica-se ao Hive 0.11 e versões posteriores. |
1 O Hadoop não tem mais suporte no SQL Server 2022 (16.x) e versões posteriores.
Referência de mapeamento de tipo Parquet e Delta
O mapeamento de tipo de tabela externa Parquet e Delta para tipos de dados do SQL Server está listado nesta seção.
Os arquivos Parquet e Delta Lake contêm descrições de tipo para cada coluna. A tabela a seguir descreve como os tipos Parquet são mapeados para tipos nativos do SQL.
| Tipo do Parquet | Tipo lógico do Parquet (anotação) | Tipo de dados SQL |
|---|---|---|
BOOLEAN |
bit | |
BINARY / BYTE_ARRAY |
varbinary | |
DOUBLE |
float | |
FLOAT |
real | |
INT32 |
int | |
INT64 |
bigint | |
INT96 |
datetime2 | |
FIXED_LEN_BYTE_ARRAY |
binário | |
BINARY |
UTF8 |
varchar1 |
BINARY |
STRING |
varchar1 |
BINARY |
ENUM |
varchar1 |
FIXED_LEN_BYTE_ARRAY |
UUID |
identificador exclusivo |
BINARY |
DECIMAL |
decimal |
BINARY |
JSON |
varchar(8000)1 |
BINARY |
BSON |
Sem suporte |
FIXED_LEN_BYTE_ARRAY |
DECIMAL |
decimal |
BYTE_ARRAY |
INTERVAL |
Sem suporte |
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) |
Tempo |
INT64 |
INT(64, true) |
bigint |
INT64 |
INT(64, false) |
decimal(20,0) |
INT64 |
DECIMAL |
decimal |
INT64 |
TIME (MICROS) |
Tempo |
INT64 |
TIME (NANOS) |
Sem suporte |
INT64 |
TIMESTAMP (normalizado para UTC) (MILLIS/MICROS) |
datetime2 |
INT64 |
TIMESTAMP (não normalizado para UTC) (MILLIS/MICROS) |
bigint - certifique-se de ajustar explicitamente o valor bigint com o deslocamento de fuso horário antes de convertê-lo em um valor de data e hora. |
INT64 |
TIMESTAMP (NANOS) |
Sem suporte |
| Tipo complexo | LISTA | varchar(8000), serializado em JSON |
| Tipo complexo | MAP | varchar(8000), serializado em JSON |
1 Ordenação UTF-8.
Referência de mapeamento de tipos Oracle
| Tipo de dados de Oracle | Tipos de dados do SQL Server |
|---|---|
FLOAT |
float |
NUMBER |
float |
NUMBER (p,s) |
decimal(p, s) |
LONG |
nvarchar |
BINARY_FLOAT |
real |
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 |
Tipos incompatíveis
Float
O Oracle dá suporte à precisão de ponto flutuante de 126, que é inferior ao que o SQL Server dá suporte (53). Portanto, Float (1 a 53) pode ser mapeado diretamente, mas, além disso, ocorre perda de dados devido ao truncamento.
Timestamp
Carimbo de data/hora e carimbo de data/hora com fuso horário local no Oracle são compatíveis com a precisão de 9 segundos fracionários, enquanto o DateTime2 do SQL Server é compatível com uma precisão de apenas 7 segundos fracionários.
Mapeamento de tipo do MongoDB
| Tipo de dados BSON | Tipos de dados do SQL Server |
|---|---|
| Double | float |
| String | nvarchar |
| Dados binários | nvarchar |
| ID de objeto | nvarchar |
| booleano | bit |
| Data | datetime2 |
| Inteiro de 32 bits | int |
| Timestamp | nvarchar |
| Inteiro de 64 bits | bigint |
| Decimal 128 | decimal |
| DBPointer | nvarchar |
| JavaScript | nvarchar |
| Chave máxima | nvarchar |
| Chave mínima | nvarchar |
| Símbolo | nvarchar |
| Expressão Regular | nvarchar |
| Indefinido/NULO | nvarchar |
O MongoDB usa documentos BSON para armazenar os registros de dados. Diferentemente de cenários anteriores, o BSON é sem esquema e dá suporte à inserção de documentos e matrizes em outros documentos. Isso proporciona flexibilidade ao usuário.
Referência de mapeamento de tipo da Teradata
| Tipo de dados Teradata | Tipos de dados do SQL Server |
|---|---|
INTEGER |
int |
SMALLINT |
smallint |
BIGINT |
bigint |
BYTEINT |
smallint |
DECIMAL |
decimal |
FLOAT |
decimal |
BYTE |
binário |
VARBYTE |
varbinary |
BLOB |
varbinary |
CHAR |
nchar |
CLOB |
nvarchar |
VARCHAR |
nvarchar |
Graphic |
nchar |
JSON |
nvarchar |
VARGRAPHIC |
nvarchar |
DATE |
date |
TIMESTAMP |
datetime2 |
TIME |
Tempo |
TIME WITH TIME ZONE |
Tempo |
TIMESTAMP WITH TIME ZONE |
Tempo |