Compartilhar via


Carregar dados com INSERT no Parallel Data Warehouse

Uso da instrução tsql INSERT para carregar dados em uma tabela distribuída ou replicada do Parallel Data Warehouse (PDW). Para obter mais informações sobre a instrução INSERT, consulte INSERT. Para tabelas replicadas e todas as colunas não distribuídas 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 oferece suporte apenas a um subconjunto de conversões implícitas que o SQL Server suporta. Portanto, quando você usa a instrução INSERT 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 de literal Formatar Regras de conversão
Literais binários 0xhexidecimal_string

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

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 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 do SQL Server PDW do tipo datetime, smalldatetime, date, time, datetimeoffset, ou datetime2.

Tipo de dados datetime

A tabela a seguir define os formatos aceitos e as regras para inserir valores literais em uma coluna de distribuição do tipo datetime. Qualquer 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.

Tipo de literal Formatar Regras de conversão
Literal de cadeia de caracteres no formato datetime “AAAA-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 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.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 de tipo smalldatetime. Qualquer 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.

Tipo de literal Formatar Regras de conversão
Literal de cadeia de caracteres no formato smalldatetime “AAAA-MM-DD hh:mm” ou “AAAA-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. Os segundos são opcionais e, se presentes, devem ser definidos com o valor 00. Qualquer outro valor gera um erro.
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 date

A tabela a seguir define os formatos e as 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 de literal Formatar Regras de conversão
Literal de cadeia de caracteres no formato date “AAAA-MM-DD”

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

Tipo de dados time

A tabela a seguir define os formatos e as regras aceitos para inserir valores literais em uma coluna de distribuição do tipo time. Qualquer 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.

Tipo de literal Formatar 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 tenha 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 é ‘AAAA-MM-DD hh:mm:ss.nnnnnnn {+|-}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.

Tipo de literal Formatar Regras de conversão
Literal de cadeia de caracteres no formato datetime “AAAA-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 '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.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 “AAAA-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 aceitos e as regras para inserir valores literais em uma coluna de distribuição do tipo datetime2 (n). O formato padrão é “AAAA-MM-DD hh:mm:ss.nnnnnnn”. 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.

Tipo de literal Formatar Regras de conversão
Literal de cadeia de caracteres no formato datetime “AAAA-MM-DD hh:mm:ss[.nnn]”

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.

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 '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:nnnnnnn”

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.

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 do SQL Server PDW que usa um tipo numérico.

tipo de dados bit

A tabela a seguir define os formatos e as regras aceitos 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 de 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.
Cadeia de caracteres literal '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 menor que 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 menor que 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 aceitos e as regras 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 dados no MSDN.

Tipo de literal Formatar
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 dados no MSDN.

Tipo de literal Formatar
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
Literais 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 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.

Tipo de literal Formatar Regras de conversão
Literal de cadeia de caracteres no formato integer “nnnnnnnnnnnnnn”

Exemplo: '321312313123'
Nenhum
Literal inteiro nnnnnnnnnnnnnn

Exemplo: 321312313123
Nenhum
Literal decimal nnnnnn.nnnnn

Exemplo: 123344.34455
Os valores à direita da vírgula decimal estão truncados.

Tipos de dados money e smallmoney

Os valores literais de money são representados como números com um ponto decimal opcional e o símbolo da moeda 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 os formatos e as regras aceitos para inserir valores literais em uma coluna de distribuição de tipo money ou smallmoney.

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

Exemplo: “123433”
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 de cadeia de caracteres em formato decimal 'nnnnnn.nnnnn'

Exemplo: '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 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 depois do ponto decimal exceder 4, o valor será arredondado para o valor mais próximo.
Literal inteiro nnnnnnnn

Exemplo: 123433
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 nnnnnn.nnnnn

Exemplo: 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 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 depois do ponto decimal exceder 4, o valor será arredondado para o valor mais próximo.

Inserção de 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 de 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 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 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.

Tipo de literal Formatar Regras de conversão
Cadeia de caracteres literal Formato: ‘cadeia de caracteres’

Exemplo: ‘abc’
Nenhum
Literal de cadeia de caracteres Unicode Formato: N'cadeia de caracteres'

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

Exemplo: 321312313123
Nenhum
Literal decimal Formato: nnnnnn.nnnnnnn

Exemplo: 12344.34455
Nenhum
Literal de money Formato: $nnnnnn.nnnnn

Exemplo: $123456.99
O símbolo da 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 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 literais de money.

Confira também

Dados distribuídos
INSERT