Carregar dados com INSERT para o Parallel Data Warehouse

Você pode usar a instrução tsql INSERT para carregar dados em uma tabela SQL Server PDW (parallel Data Warehouse) distribuída ou replicada. Para obter mais informações sobre INSERT, consulte INSERT. Para tabelas replicadas e todas as colunas de não distribuição em uma tabela distribuída, o PDW usa o SQL Server para converter implicitamente os valores de dados especificados na instrução para o tipo de dados da coluna de destino. Para obter mais informações sobre regras de conversão de dados do SQL Server, consulte Conversão de tipo de dados para SQL. No entanto, para colunas de distribuição, o PDW dá suporte apenas a um subconjunto de conversões implícitas compatíveis com o SQL Server. Portanto, quando você usa a INSERT instrução para carregar dados em uma coluna de distribuição, os dados de origem devem ser especificados em um dos formatos definidos nas tabelas a seguir.

Inserir literais em tipos binários

A tabela a seguir define os tipos literais aceitos, o formato e as regras de conversão para inserir um valor literal em uma coluna de distribuição do tipo binário (n) ou varbinary(n).

Tipo literal Formato Regras de conversão
Literal binário 0xhexadecimal_string

Exemplo: 0x12Ef
Literais binários devem ser prefixados com 0x.

O comprimento da fonte de dados não pode exceder o número de bytes especificados 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 nos tipos de data e hora

Os literais de data e hora são representados usando valores 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 inserir um literal de data ou hora em uma coluna de distribuição PDW do SQL Server do tipo datetime, smalldatetime, date, time, datetimeoffset ou datetime2.

tipo de dados data e hora

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

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres no formato datetime 'YYYY-MM-DD hh:mm:ss[.nnn]'

Exemplo: '2007-05-08 12:35:29.123'
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 'YYYY-MM-DD hh:mm'

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

Exemplo: '2007-05-08'
Os valores de tempo (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 'YYYY-MM-DD hh:mm:ss.nnnnnnn'

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-08 12:35:29.1234567' gera um erro.

tipo de dados smalldatetime

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

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres no formato smalldatetime 'YYYY-MM-DD hh:mm' ou 'YYYY-MM-DD hh:mm:00'

Exemplo: '2007-05-08 12:00' ou '2007-05-08 12:00:00'
Os dados de origem devem ter valores para ano, mês, data, hora e minuto. Segundos são opcionais e, se presentes, devem ser definidos como o valor 00. Qualquer outro valor gera um erro.
Literal de cadeia de caracteres no formato date 'YYYY-MM-DD'

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

Tipo de dados date

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

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres no formato date 'YYYY-MM-DD'

Exemplo: '2007-05-08'
Esse é o único formato aceito.

Tipo de dados time

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

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres no formato time 'hh:mm:ss.nnnnnnn'

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'.

Um valor que tem uma precisão maior do que o tipo de dados de destino é rejeitado.

tipo de dados datetimeoffset

A tabela a seguir define os formatos e as regras aceitos para inserir valores literais em uma coluna de distribuição do tipo datetimeoffset (n). O formato padrão é 'YYYY-MM-DD hh:mm:ss.nnnnnnn {+|-}hh:mm'. Uma cadeia de caracteres vazia ('') é convertida no 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 da coluna. Por exemplo, uma coluna definida como datetimeoffset (2) terá dois dígitos fracionários.

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres no formato datetime 'YYYY-MM-DD hh:mm:ss[.nnn]'

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 'YYYY-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 'YYYY-MM-DD'

Exemplo: '2007-05-08'
Os valores de tempo (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 'YYYY-MM-DD hh:mm:ss.nnnnnnn'

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 'YYYY-MM-DD hh:mm:ss.nnnnnnn (+|-) 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 e as regras aceitos para inserir valores literais em uma coluna de distribuição do tipo datetime2 (n). O formato padrão é 'YYYY-MM-DD hh:mm:ss.nnnnnnn'. Uma cadeia de caracteres vazia ('') é convertida no 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 da coluna. Por exemplo, uma coluna definida como datetime2 (2) terá dois dígitos fracionários.

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres no formato datetime 'YYYY-MM-DD hh:mm:ss[.nnn]'

Exemplo: '2007-05-08 12:35:29.123'
Segundos fracionários são opcionais e são definidos como 0 quando o valor é inserido.

Um valor que tem mais dígitos fracionários do que o tipo de dados de destino é rejeitado.
Literal de cadeia de caracteres no formato smalldatetime 'YYYY-MM-DD hh:mm'

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

Exemplo: '2007-05-08'
Os valores de tempo (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.00000000'.
Literal de cadeia de caracteres no formato datetime2 'YYYY-MM-DD hh:mm:ss:nnnnnnn'

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

Inserir literais em tipos numéricos

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

tipo de dados bit

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

Tipo literal format Regras de conversão
Literal de cadeia de caracteres no formato integer 'nnnnnnnnnn'

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 em 1. Por exemplo, o valor '123' é convertido em 1.
Literal de cadeia de caracteres 'TRUE' ou 'FALSE'

Exemplo: 'true'
O valor 'TRUE' é convertido em 1; o valor 'FALSE' é convertido em 0.
Literal inteiro nnnnnnnn

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

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

tipo de dados decimal

A tabela a seguir define os formatos e as regras aceitos para inserir valores literais em uma coluna de distribuição do tipo decimal (p,s). As regras de conversão de dados são as mesmas do SQL Server. Para obter mais informações, consulte Conversão de tipo de dados no MSDN.

Tipo literal Formato
Literal de cadeia de caracteres no formato integer 'nnnnnnnnnnnn'

Exemplo: '321312313123'
Literal de cadeia de caracteres em formato decimal 'nnnnnn.nnnnn'

Exemplo: '123344.34455'
Literal inteiro nnnnnnnnnnnn

Exemplo: 321312313123
Literal decimal nnnnnn.nnnnn

Exemplo: '123344.34455'

Tipos de dados flutuantes e reais

A tabela a seguir define os formatos e as regras aceitos para inserir valores literais em uma coluna de distribuição do tipo float ou real. As regras de conversão de dados são as mesmas do SQL Server. Para obter mais informações, consulte Conversão de tipo de dados no MSDN.

Tipo literal Formato
Literal de cadeia de caracteres no formato integer 'nnnnnnnnnnnn'

Exemplo: '321312313123'
Literal de cadeia de caracteres em formato decimal 'nnnnnn.nnnnn'

Exemplo: '123344.34455'
Literal de cadeia de caracteres no formato floating point 'n.nnnnnE+nn'

Exemplo: '3.12323E+14'
Literal inteiro nnnnnnnnnnnn

Exemplo: 321312313123
Literal decimal nnnnnn.nnnnn

Exemplo: 123344.34455
Literal de ponto flutuante n.nnnnnE+nn

Exemplo: 3.12323E+14

tipos de dados int, bigint, tinyint, smallint

A tabela a seguir define os formatos e as regras aceitos para inserir valores literais em uma coluna de distribuição de tipo int, bigint, tinyint ou smallint. A fonte de dados não pode exceder o intervalo permitido para o tipo de dados fornecido. Por exemplo, o intervalo de tinyint é de 0 a 255 e o intervalo para int é de -2.147.483.648 a 2.147.483.647.

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres no formato integer 'nnnnnnnnnnnnnn'

Exemplo: '321312313123'
None
Literal inteiro nnnnnnnnnnnnnn

Exemplo: 321312313123
None
Literal decimal nnnnnn.nnnnn

Exemplo: 123344.34455
Os valores à direita do ponto decimal são truncados.

Tipos de dados money e smallmoney

Valores literais de dinheiro são representados como números com um ponto decimal opcional e um símbolo de moeda como prefixo. A fonte de dados não pode exceder o intervalo permitido para o tipo de dados fornecido. Por exemplo, o intervalo de dinheiro pequeno é -214.748.3648 a 214.748.3647 e o intervalo para dinheiro é -922.337.203.685.477.5808 a 922.337.203.685.477.5807. A tabela a seguir define os formatos e as regras aceitos para inserir valores literais em uma coluna de distribuição do tipo dinheiro ou smallmoney.

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres no formato integer 'nnnnnnnn'

Exemplo: '123433'
Dígitos ausentes após o ponto decimal são definidos como 0 quando o valor é inserido. Por exemplo, o literal '12345' é inserido como 12345.0000.
Literal de cadeia de caracteres em formato decimal 'nnnnnn.nnnnn'

Exemplo: '123344.34455'
Se o número de dígitos após o 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 de cadeia de caracteres em formato money ‘$nnnnnn.nnnn’

Exemplo: '$123456.7890'
O símbolo de moeda opcional não é inserido com o valor.

Se o número de dígitos após o ponto decimal exceder 4, o valor será arredondado para o valor mais próximo.
Literal inteiro nnnnnnnn

Exemplo: 123433
Dígitos ausentes após o ponto decimal são definidos como 0 quando o valor é inserido. Por exemplo, o literal 12345 é inserido como 12345.0000.
Literal decimal nnnnnn.nnnnn

Exemplo: 123344.34455
Se o número de dígitos após o 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 de money $nnnnnn.nnnn

Exemplo: $123456.7890
O símbolo de moeda opcional não é inserido com o valor.

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

Inserindo literais em tipos de cadeia de caracteres

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

tipos de dados char, varchar, nchar e nvarchar

A tabela a seguir define os formatos e as regras aceitos para inserir valores literais em uma coluna de distribuição 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 tamanho da fonte de dados for menor que o tamanho do tipo de dados char ou nchar , os dados serão adicionados à direita com espaços em branco para alcançar o tamanho do tipo de dados.

Tipo literal Formato Regras de conversão
Literal de cadeia de caracteres Formato: 'cadeia de caracteres'

Exemplo: 'abc'
None
Literal de cadeia de caracteres Unicode Formato: N'character string'

Exemplo: N'abc'
None
Literal inteiro Formato: nnnnnnnnnnn

Exemplo: 321312313123
None
Literal decimal Formato: nnnnnn.nnnnnnn

Exemplo: 12344.34455
None
Literal de money Formato (valor numérico): $nnnnnn.nnnnn

Exemplo: $123456.99
O símbolo de moeda 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 da ferramenta dwloader , que trata cada literal como um literal de cadeia de caracteres.

Vírgulas não são permitidas.

Se o número de dígitos após o ponto decimal exceder 2, o valor será arredondado até 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 literais de dinheiro.

Consulte Também

Dados distribuídos
INSERT