Compartilhar via


Regras de conversão de tipos de dados para o dwloader - Analytics Platform Service (PDW)

Este artigo descreve os formatos de dados de entrada e as conversões de tipos de dados implícitos para os quais o dwloader Command-Line Loader oferece suporte quando carrega dados no PDW. As conversões de dados implícitas ocorrem quando os dados de entrada não correspondem ao tipo de dados na tabela de destino do SQL Server PDW. Use essas informações quando criar seu processo de carregamento para garantir que os dados sejam carregados com êxito no SQL Server PDW.

Inserir literais em tipos binários

A tabela a seguir define os tipos de literai, o formato e as regras de conversão aceitos para carregar um valor de literal em uma coluna do SQL Server PDW do tipo binary (n) ou varbinary(n).

Insira o tipo de dados Insira dados de exemplo Conversão para tipo de dados binário ou varbinary
Literal binário [0x]hexidecimal_string

Exemplo: 12Ef ou 0x12Ef
O prefixo 0x é opcional.

O comprimento da fonte de dados não pode exceder o número de bytes especificado para o tipo de dados.

Se o comprimento da fonte de dados for menor que o tamanho do tipo de dados binário, os dados serão preenchidos à direita com zeros para atingir o tamanho do tipo de dados.

Inserir literais em tipos de data e hora

Os literais de data e hora são representados usando literais de cadeia de caracteres em formatos específicos, colocados entre aspas únicas. As tabelas a seguir definem os tipos literais permitidos, o formato e as regras de conversão para carregar um literal de data ou hora em uma coluna do tipo datetime, smalldatetime, date, time, datetimeoffset, ou datetime2. As tabelas definem o formato padrão para o tipo de dados fornecido. Outros formatos que podem ser especificados estão definidos na seção Formatos Datetime. Os literais de data e hora não podem incluir espaços à esquerda ou à direita. Os valores date, smalldatetime e null não podem ser carregados no modo de largura fixa.

Tipo de dados datetime

A tabela a seguir define o formato padrão e as regras para carregar valores literais em uma coluna do tipo datetime. Uma cadeia de caracteres vazia ('') é convertida para o valor padrão '1900-01-01 12:00:00.000'. Cadeias de caracteres que contêm apenas espaços em branco (' ') geram um erro.

Insira o tipo de dados Insira dados de exemplo Conversão para tipo de dados datetime
Literal de cadeia de caracteres no formato datetime 'aaaa-MM-dd hh:mm:ss[.fff]'

Exemplo: '2007-05-08 12:35:29.123'
Os dígitos fracionários ausentes são definidos como 0 quando o valor é inserido. Por exemplo, o literal “2007-05-08 12:35” é inserido como “2007-05-08 12:35:00.000”.
Literal de cadeia de caracteres no formato smalldatetime 'aaaa-MM-dd hh:mm'

Exemplo: '2007-05-08 12:35'
Os segundos e os dígitos fracionários restantes são definidos como 0 quando o valor é inserido.
Literal de cadeia de caracteres no formato date 'aaaa-MM-dd'

Exemplo: '2007-05-08'
Os valores temporais (hora, minutos, segundos e frações) são definidos como 12:00:00.000 quando o valor é inserido.
Literal de cadeia de caracteres no formato datetime2 'aaaa-MM-dd hh:mm:ss.fffffff'

Exemplo: '2007-05-08 12:35:29.1234567'
Os dados de origem não podem exceder três dígitos fracionários. Por exemplo, o literal '2007-05-08 12:35:29.123' será inserido, mas o valor '2007-05-8 12:35:29.1234567' gerará um erro.

Tipo de dados smalldatetime

A tabela a seguir define os formatos padrão e as regras para carregar valores literais em uma coluna do tipo smalldatetime. Uma cadeia de caracteres vazia ('') é convertida para o valor padrão '1900-01-01 12:00'. Cadeias de caracteres que contêm apenas espaços em branco (' ') geram um erro.

Insira o tipo de dados Insira dados de exemplo Conversão para tipo de dados smalldatetime
Literal de cadeia de caracteres no formato smalldatetime 'aaaa-MM-dd hh:mm' ou 'aaaa-MM-dd hh:mm:ss'

Exemplo: '2007-05-08 12:00' ou '2007-05-08 12:00:15'
Os dados de origem devem ter valores para ano, mês, data, hora e minuto. Os segundos são opcionais e, se presentes, devem ser definidos com o valor 00. Qualquer outro valor geralmente é um código de erro.

Os segundos são opcionais. Ao carregar em uma coluna smalldatetime, o dwloader arredondará os segundos e as frações de segundos. Por exemplo, 1999-01-05 20:10:35.123 carregará como 01-05 20:11.
Literal de cadeia de caracteres no formato date 'aaaa-MM-dd'

Exemplo: '2007-05-08'
Os valores temporais (hora, minutos, segundos e frações) são definidos como 0 quando o valor é inserido.

Tipo de dados de data

A tabela a seguir define os formatos padrão e as regras para carregar valores literais em uma coluna do tipo date. Uma cadeia de caracteres vazia ('') é convertida para o valor padrão '1900-01-01'. Cadeias de caracteres que contêm apenas espaços em branco (' ') geram um erro.

Insira o tipo de dados Insira dados de exemplo Conversão para tipo de dados de data
Literal de cadeia de caracteres no formato date 'aaaa-MM-dd'

Exemplo: '2007-05-08'

Tipo de dados de tempo

A tabela a seguir define os formatos padrão e as regras para carregar valores literais em uma coluna do tipo time. Uma cadeia de caracteres vazia ('') é convertida para o valor padrão '00:00:00.0000'. Cadeias de caracteres que contêm apenas espaços em branco (' ') geram um erro.

Insira o tipo de dados Insira dados de exemplo Conversão para tipo de dados de hora
Literal de cadeia de caracteres no formato time 'hh:mm:ss.fffffff'

Exemplo: '12:35:29.1234567'
Se a fonte de dados tiver uma precisão menor ou igual (número de dígitos fracionários) do que a precisão do tipo de dados time, os dados serão preenchidos à direita com zeros. Por exemplo, um valor literal “12:35:29.123” é inserido como '12:35:29.1230000'.

Tipo de dados datetimeoffset

A tabela a seguir define os formatos padrão e as regras para carregar valores literais em uma coluna do tipo datetimeoffset (n). O formato padrão é ‘aaaa-MM-dd hh:mm:ss.fffffff {+|-}hh:mm'. Uma cadeia de caracteres vazia ('') é convertida para o valor padrão '1900-01-01 12:00:00.0000000 +00:00'. Cadeias de caracteres que contêm apenas espaços em branco (' ') geram um erro. O número de dígitos fracionários depende da definição de coluna. Por exemplo, uma coluna definida como datetimeoffset (2) terá dois dígitos fracionários.

Insira o tipo de dados Insira dados de exemplo Conversão para tipo de dados datetimeoffset
Literal de cadeia de caracteres no formato datetime 'aaaa-MM-dd hh:mm:ss[.fff]'

Exemplo: '2007-05-08 12:35:29.123'
Os dígitos fracionários ausentes são definidos como 0 quando os valores de deslocamento são inseridos. Por exemplo, o literal ‘2007-05-08 12:35:29.123’ é inserido como '2007-05-08 12:35:29.1230000 +00:00’.
Literal de cadeia de caracteres no formato smalldatetime 'aaaa-MM-dd hh:mm'

Exemplo: '2007-05-08 12:35'
Segundos, dígitos fracionários restantes e valores de deslocamento são definidos como 0 quando o valor é inserido.
Literal de cadeia de caracteres no formato date 'aaaa-MM-dd'

Exemplo: '2007-05-08'
Os valores temporais (hora, minutos, segundos e frações) são definidos como 0 quando o valor é inserido. Por exemplo, o literal '2007-05-08' é inserido como '2007-05-08 00:00:00.0000000 +00:00'.
Literal de cadeia de caracteres no formato datetime2 'aaaa-MM-dd hh:mm:ss.fffffff'

Exemplo: '2007-05-08 12:35:29.1234567'
Os dados de origem não podem exceder o número especificado de segundos fracionários na coluna datetimeoffset. Se a fonte de dados tiver um número menor ou igual de segundos fracionários, os dados serão preenchidos à direita com zeros. Por exemplo, se o tipo de dados for datetimeoffset (5), o valor literal “2007-05-08 12:35:29.123 +12:15” será inserido como “12:35:29.12300 +12:15”.
Literal de cadeia de caracteres no formato datetimeoffset 'aaaa-MM-dd hh:mm:ss.fffffff {+|-} hh:mm'

Exemplo: '2007-05-08 12:35:29.1234567 +12:15'
Os dados de origem não podem exceder o número especificado de segundos fracionários na coluna datetimeoffset. Se a fonte de dados tiver um número menor ou igual de segundos fracionários, os dados serão preenchidos à direita com zeros. Por exemplo, se o tipo de dados for datetimeoffset (5), o valor literal “2007-05-08 12:35:29.123 +12:15” será inserido como “12:35:29.12300 +12:15”.

Tipo de dados datetime2

A tabela a seguir define os formatos padrão e as regras para carregar valores literais em uma coluna do tipo datetime2 (n). O formato padrão é ‘aaaa-MM-dd hh:mm:ss.fffffff'. Uma cadeia de caracteres vazia ('') é convertida para o valor padrão '1900-01-01 12:00:00'. Cadeias de caracteres que contêm apenas espaços em branco (' ') geram um erro. O número de dígitos fracionários depende da definição de coluna. Por exemplo, uma coluna definida como datetime2 (2) terá dois dígitos fracionários.

Insira o tipo de dados Insira dados de exemplo Conversão para tipo de dados datetime2
Literal de cadeia de caracteres no formato datetime 'aaaa-MM-dd hh:mm:ss[.fff]'

Exemplo: '2007-05-08 12:35:29.123'
Os segundos fracionários são opcionais e são definidos como 0, quando o valor é inserido.
Literal de cadeia de caracteres no formato smalldatetime 'aaaa-MM-dd hh:mm'

Exemplo: “2007-05-08 12”
Os segundos opcionais e os dígitos fracionários restantes são definidos como 0 quando o valor é inserido.
Literal de cadeia de caracteres no formato date 'aaaa-MM-dd'

Exemplo: '2007-05-08'
Os valores temporais (hora, minutos, segundos e frações) são definidos como 0 quando o valor é inserido. Por exemplo, o literal “2007-05-08” é inserido como “2007-05-08 12:00:00.0000000”.
Literal de cadeia de caracteres no formato datetime2 'aaaa-MM-dd hh:mm:ss:fffffff'

Exemplo: '2007-05-08 12:35:29.1234567'
Se a fonte de dados contiver componentes de dados e hora menores ou iguais ao valor especificado em datetime2(n), os dados serão inseridos, caso contrário, um erro será gerado.

Formatos datetime

O Dwloader oferece suporte aos seguintes formatos de dados para os dados de entrada que estiverem sendo carregados no SQL Server PDW. Mais detalhes são listados após a tabela.

datetime smalldatetime date datetime2 datetimeoffset
[M[M]]M-[d]d-[yy]yy HH:mm:ss[.fff] [M[M]]M-[d]d-[aa]aa HH:mm[:00] [M[M]]M-[d]d-[aa]aa [M[M]]M-[d]d-[aa]aa HH:mm:ss[.fffffff] [M[M]]M-[d]d-[aa]aa HH:mm:ss[.fffffff] zzz
[M[M]]M-[d]d-[aa]aa hh:mm:ss[.fff][tt] [M[M]]M-[d]d-[aa]aa hh:mm[:00][tt] [M[M]]M-[d]d-[aa]aa hh:mm:ss[.fffffff][tt] [M[M]]M-[d]d-[aa]aa hh:mm:ss[.fffffff][tt] zzz
[M[M]]M-[yy]yy-[d]d HH:mm:ss[.fff] [M[M]]M-[yy]yy-[d]d HH:mm[:00] [M[M]]M-[yy]yy-[d]d [M[M]]M-[yy]yy-[d]d HH:mm:ss[.fffffff] [M[M]]M-[aa]aa-[d]d HH:mm:ss[.fffffff] zzz
[M[M]]M-[aa]aa-[d]d hh:mm:ss[.fff][tt] [M[M]]M-[aa]aa-[d]d hh:mm[:00][tt] [M[M]]M-[aa]aa-[d]d hh:mm:ss[.fffffff][tt] [M[M]]M-[aa]aa-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[M[M]]M-[d]d HH:mm:ss[.fff] [yy]yy-[M[M]]M-[d]d HH:mm[:00] [yy]yy-[M[M]]M-[d]d [yy]yy-[M[M]]M-[d]d HH:mm:ss[.fffffff] [aa]aa-[M[M]]M-[d]d HH:mm:ss[.fffffff] zzz
[aa]aa-[M[M]]M-[d]d hh:mm:ss[.fff][tt] [aa]aa-[M[M]]M-[d]d hh:mm[:00][tt] [aa]aa-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] [aa]aa-[M[M]]M-[d]d hh:mm:ss[.fffffff][tt] zzz
[yy]yy-[d]d-[M[M]]M HH:mm:ss[.fff] [aa]aa-[d]d-[M[M]]M HH:mm[:00] [yy]yy-[d]d-[M[M]]M [aa]aa-[d]d-[M[M]]M HH:mm:ss[.fffffff] [aa]aa-[d]d-[M[M]]M HH:mm:ss[.fffffff] zzz
[aa]aa-[d]d-[M[M]]M hh:mm:ss[.fff][tt] [aa]aa-[d]d-[M[M]]M hh:mm[:00][tt] [aa]aa-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] [aa]aa-[d]d-[M[M]]M hh:mm:ss[.fffffff][tt] zzz
[d]d-[M[M]]M-[aa]aa HH:mm:ss[.fff] [d]d-[M[M]]M-[aa]aa HH:mm[:00] [d]d-[M[M]]M-[aa]aa [d]d-[M[M]]M-[aa]aa HH:mm:ss[.fffffff] [d]d-[M[M]]M-[aa]aa HH:mm:ss[.fffffff] zzz
[d]d-[M[M]]M-[aa]aa hh:mm:ss[.fff][tt] [d]d-[M[M]]M-[aa]aa hh:mm[:00][tt] [d]d-[M[M]]M-[aa]aa hh:mm:ss[.fffffff][tt] [d]d-[M[M]]M-[aa]aa hh:mm:ss[.fffffff][tt] zzz
[d]d-[yy]yy-[M[M]]M HH:mm:ss[.fff] [d]d-[aa]aa-[M[M]]M HH:mm[:00] [d]d-[yy]yy-[M[M]]M [d]d-[yy]yy-[M[M]]M HH:mm:ss[.fffffff] [d]d-[aa]aa-[M[M]]M HH:mm:ss[.fffffff] zzz
[d]d-[aa]aa-[M[M]]M hh:mm:ss[.fff][tt] [d]d-[aa]aa-[M[M]]M hh:mm[:00][tt] [d]d-[aa]aa-[M[M]]M hh:mm:ss[.fffffff][tt] [d]d-[aa]aa-[M[M]]M hh:mm:ss[.fffffff][tt] zzz

Detalhes:

  • Para separar os valores de mês, dia e ano, use ' - ', ' / ', ou ' . '. Para simplificar, a tabela use apenas o separador ‘-’.

  • Para especificar o mês como texto, use três ou mais caracteres. Os meses com um ou dois caracteres são interpretados como um número.

  • Para separar os valores de tempo, use o símbolo ' : '.

  • As letras entre colchetes são opcionais.

  • As letras 'tt' designam AM|PM|am|pm. AM é o padrão. Quando 'tt' for especificado, o valor de hora (hh) precisará estar no intervalo de 0 a 12.

  • As letras 'zzz' designam a diferença do fuso horário para o fuso horário atual do sistema no formato {+|-}HH:ss].

Inserir literais em tipos numéricos

As tabelas a seguir definem os formatos padrão e as regras de conversão para carregar um valor de literal em uma coluna do SQL Server PDW que usa um tipo numérico.

tipo de dados do bit

A tabela a seguir define os formatos padrão e as regras para carregar valores literais em uma coluna do tipo bit. Uma cadeia de caracteres vazia ('') ou uma cadeia de caracteres que contém apenas espaços em branco (' ') é convertida para 0.

Insira o tipo de dados Insira dados de exemplo Conversão para tipo de dados de bit
Literal de cadeia de caracteres no formato integer 'ffffffffff'

Exemplo: '1' ou '321'
Um valor inteiro formatado como um literal de cadeia de caracteres não pode conter um valor negativo. Por exemplo, o valor '-123' gera um erro.

Um valor maior que 1 é convertido para 1. Por exemplo, o valor '123' é convertido para 1.
Cadeia de caracteres literal 'TRUE' ou 'FALSE'

Exemplo: ‘true’
O valor ‘TRUE’ é convertido em 1; o valor ‘FALSE’ é convertido em 0.
Integer literal fffffffn

Exemplo: 1 ou 321
Um valor maior que 1 ou menor que 0 é convertido em 1. Por exemplo, os valores 123 e -123 são convertidos em 1.
Literal decimal fffnn.fffn

Exemplo: 1234.5678
Um valor maior que 1 ou menor que 0 é convertido em 1. Por exemplo, os valores 123.45 e -123.45 são convertidos em 1.

Tipo de dados decimais

A tabela a seguir define as regras para carregar valores de literais em uma coluna do tipo decimal (p,s). As regras de conversão de dados são as mesmas para o SQL Server. Para obter mais informações, consulte Conversão de tipo de dados (Mecanismo de banco de dados).

Insira o tipo de dados Insira dados de exemplo
Integer literal 321312313123
Literal decimal 123344.34455

Tipos de dados flutuantes e reais

A tabela a seguir define as regras para carregar valores de literais em uma coluna do tipo float ou real. As regras de conversão de dados são as mesmas para o SQL Server. Para obter mais informações, consulte Conversão de tipo de dados (Mecanismo de banco de dados).

Insira o tipo de dados Insira dados de exemplo
Integer literal 321312313123
Literal decimal 123344.34455
Literais de ponto flutuante 3,12323E+14

Tipos de dados int, bigint, tinyint, smallint

A tabela a seguir define as regras para carregar valores de literais em uma coluna do tipo int, bigint, tinyint ou smallint. A fonte de dados não pode exceder o intervalo permitido para o tipo de dados especificado. Por exemplo, o intervalo para tinyint é de 0 a 255 e o intervalo para int é de -2,147,483,648 a 2,147,483,647.

Insira o tipo de dados Insira dados de exemplo Conversão para tipos de dados Integer
Integer literal 321312313123
Literal decimal 123344.34455 Os valores à direita da vírgula decimal estão truncados.

Tipos de dados money e smallmoney

Os valores literais money são representados como cadeias de números com um ponto decimal opcional e um símbolo da moeda opcional como prefixo. A fonte de dados não pode exceder o intervalo permitido para o tipo de dados especificado. Por exemplo, o intervalo para smallmoney é de -214,748.3648 a 214,748.3647 e o intervalo para money é de -922,337,203,685,477.5808 a 922,337,203,685,477.5807. A tabela a seguir define as regras para carregar valores de literais em uma coluna do tipo money ou smallmoney.

Insira o tipo de dados Insira dados de exemplo Conversão para dinheiro ou tipo de dados smallmoney
Integer literal 321312 Os dígitos ausentes depois do ponto decimal são definidos como 0 quando o valor é inserido. Por exemplo, o literal 12345 é inserido como 12345.0000
Literal decimal 123344.34455 Se o número de dígitos depois do ponto decimal exceder 4, o valor será arredondado para o valor mais próximo. Por exemplo, o valor 123344.34455 é inserido como 123344.3446.
Literal money $123456.7890 O símbolo da moeda não é inserido com o valor.

Se o número de dígitos depois do ponto decimal exceder 4, o valor será arredondado para o valor mais próximo.

Inserir literais em tipos de sequências

As tabelas a seguir definem os formatos padrão e as regras de conversão para carregar um valor de literal em uma coluna do SQL Server PDW que usa um tipo de cadeia de caracteres.

Os tipos de dados válidos são char, varchar, nchar e nvarchar

A tabela a seguir define os formatos padrão e as regras para carregar valores literais em uma coluna do tipo char, varchar, nchar e nvarchar. O comprimento da fonte de dados não pode exceder o tamanho especificado para o tipo de dados. Se o comprimento da fonte de dados for menor que o tamanho do tipo de dados char ou nchar, os dados serão preenchidos à direita com espaços em branco para atingir o tamanho do tipo de dados.

Insira o tipo de dados Insira dados de exemplo Conversão para tipos de dados de caracteres
Cadeia de caracteres literal Formato: ‘cadeia de caracteres’

Exemplo: 'abc'
NA
Literal da cadeia de caracteres Unicode Formato: N'cadeia de caracteres'

Exemplo: N'abc'
NA
Integer literal Formato: ffffffffffn

Exemplo: 321312313123
NA
Literal decimal Formato: ffffff.fffffff

Exemplo: 12344.34455
NA
Literal money Formato: $ffffff.fffnn

Exemplo: $123456.99
O símbolo de moeda opcional não é inserido com o valor. Para inserir o símbolo da moeda, insira o valor como um literal de cadeia de caracteres. Isso corresponderá ao formato do carregador, que trata cada literal como um literal da cadeia de caracteres.

Vírgulas não são permitidas.

Se o número de dígitos depois do ponto decimal exceder 2, o valor será arredondado para o valor mais próximo. Por exemplo, o valor 123.946789 é inserido como 123.95.

Somente o estilo padrão 0 (sem vírgulas e 2 dígitos após o ponto decimal) é permitido ao usar a função CONVERT para inserir as literais money.

Comentários gerais

O dwloader executa as mesmas conversões implícitas que o SMP SQL Server executa, mas não oferece suporte a todas as conversões implícitas suportadas pelo SMP SQL Server.