Carregador de linha de comando dwloader para Parallel Data Warehouse

O dwloader é uma ferramenta de linha de comando do PDW (Parallel Data Warehouse) que carrega linhas de tabela em massa em uma tabela existente. Ao carregar linhas, você pode adicionar as linhas ao final da tabela (modo de acréscimo ou modo de acréscimo rápido), acrescentar novas linhas e atualizar linhas existentes (modo upsert) ou excluir as linhas existentes antes de carregar e inserir as linhas em uma tabela vazia (modo de recarga).

Processo para carregar dados

  1. Prepare os dados de origem.

    Use o processo de ETL para criar os dados de origem que deseja carregar. Os dados de origem devem ter formatação compatível com o esquema da tabela de destino. Armazene os dados de origem em um ou mais arquivos de texto e copie os arquivos de texto para o mesmo diretório no servidor de carregamento. Para obter mais informações sobre o servidor de carregamento, consulte Adquirir e configurar um servidor de carregamento

  2. Prepare as opções de carregamento.

    Decida as opções de carregamento que você usará. Armazene as opções de carregamento em um arquivo de configuração. Copie o arquivo de configuração para um local no servidor de carregamento. As opções de configuração do dwloader são descritas neste tópico.

  3. Prepare as opções de falha no carregamento.

    Decida como deseja que o dwloader lide com linhas que não foram carregadas. Para executar o carregamento, o dwloader carrega os dados em uma tabela de preparo e os transfere para a tabela de destino. À medida que o Carregador carrega dados na tabela de preparo, ele acompanha o número de linhas que não são carregadas. Por exemplo, as linhas de formatação incorreta não serão carregadas. As linhas com falha são copiadas para um arquivo de rejeição. Por padrão, o carregamento é anulado após a primeira rejeição, a menos que você determine outro limite de rejeição.

  4. Instale o dwloader.

    Instale o dwloader no servidor de carregamento se ele ainda não estiver instalado.

  1. Execute o dwloader.

    Entre no servidor de carregamento e execute o dwloader.exe executável com as opções de linha de comando apropriadas.

  2. Verifique os resultados.

    Você pode verificar o arquivo de linhas com falha (especificado com -R) para ver se alguma não foi carregada. Se o arquivo estiver vazio, todas as linhas foram carregadas com êxito. O dwloader é transacional. Portanto, se uma etapa falhar (além de linhas rejeitadas), todas as etapas serão revertidas para o estado inicial.

Sintaxe

dwloader.exe { -h }  
  
dwloader.exe   
    {  
        { -U login_name  -P password  }  
        | -W  
    }  
    [ -f parameter_file ]  
    [ -S target_appliance ]  
    { -T target_database_name . [ schema ] . table_name }   
    { -i source_data_location } [ <source_data_options> ]  
    { -R load_failure_file_name } [ <load_failure_options> ]  
    [ <loading_options> ]  
}  
  
<source_data_options> ::=  
{  
    [ -fh number_header_rows ]  
    [ < variable_length_column_options > | < fixed_width_column_options > ]  
    [ -D { mdy | myd | ymd | ydm | dmy | dym | custom_date_format } ]  
    [ -dt datetime_format_file ]  
}  
  
<variable_length_column_options> ::=  
{  
    [ -e character_encoding ]  
    -r row_delimiter   
    [ -s string_delimiter ]  
    -t field_delimiter   
}  
  
<fixed_width_column_options> ::=  
{  
    -w fixed_width_config_file   
    [ -e character_encoding ]   
    -r row_delimiter   
}  
  
<load_failure_options> ::=  
{  
    [ -rt { value | percentage } ]  
    [ -rv reject_value ]  
    [ -rs reject_sample_value ]  
}  
  
<loading_options> ::=  
{  
    [ -d staging_database_name ]  
    [ -M { append | fastappend | upsert -K merge_column [ ,...n ] | reload } ]  
    [ -b batchsize ]   
    [ -c ]  
    [ -E ]  
    [ -m ]  
    [ -N ]  
    [ -se ]
    [ -l ]   
}  

Argumentos

-h
Exibe informações simples de Ajuda sobre como usar o Carregador. A ajuda só será exibida se nenhum outro parâmetro de linha de comando for especificado.

-U login_name
Um logon válido de Autenticação do SQL Server com permissões apropriadas para executar o carregamento.

-P password
A senha para um login_name de Autenticação do SQL Server.

-W
Use a Autenticação do Windows. (Não é necessário login_name ou senha.)

-f parameter_file_name
Use um arquivo de parâmetro, parameter_file_name, no lugar de parâmetros de linha de comando. O parameter_file_name pode conter todo parâmetro de linha de comando, exceto user_name e senha. Se um parâmetro for especificado na linha de comando e no arquivo de parâmetro, a linha de comando substituirá o parâmetro de arquivo.

O arquivo de parâmetro contém um parâmetro, sem o prefixo -, por linha.

Exemplos:

rt=percentage

rv=25

-S target_appliance
Especifica o dispositivo SQL Server PDW que receberá os dados carregados.

Para conexões InfiniBand, target_appliance é especificado como <appliance-name>-SQLCTL01. Para configurar essa conexão nomeada, consulte Configurar adaptadores de rede InfiniBand.

Para conexões Ethernet, target_appliance é o endereço IP do cluster de nós de controle.

Se omitido, o dwloader considerará como padrão o valor especificado durante a instalação.

-T target_database_name.[schema].table_name
O nome em três partes da tabela de destino.

-I source_data_location
A localização de um ou mais arquivos de origem a serem carregados. Cada arquivo de origem deve ser um arquivo de texto ou um arquivo de texto compactado com o gzip. Apenas um arquivo de origem pode ser compactado em cada arquivo gzip.

Para formatar um arquivo de origem:

  • O arquivo de origem deve ser formatado de acordo com as opções de carregamento.

  • Cada linha em um arquivo de origem contém os dados de uma linha da tabela. Os dados de origem devem ser compatíveis com o esquema da tabela de destino. A ordem das colunas e os tipos de dados também devem ser compatíveis. Cada campo na linha representa uma coluna na tabela de destino.

  • Por padrão, os campos têm comprimento variável e são separados por um delimitador. Para especificar o tipo de delimitador, use as opções de linha de comando <variable_length_column_options>. Para especificar campos de comprimento fixo, use as opções de linha de comando <fixed_width_column_options>.

Para especificar a localização dos dados de origem:

  • A localização dos dados de origem pode ser um caminho de rede ou um caminho local para um diretório no servidor de carregamento.

  • Para especificar todos os arquivos em um diretório, insira o caminho do diretório seguido pelo caractere curinga *. O carregador não carrega arquivos de subdiretórios que estejam na localização dos dados de origem. O carregador apresenta falha quando há um diretório em um arquivo gzip.

  • Para especificar alguns dos arquivos em um diretório, use uma combinação de caracteres e o curinga *.

Para carregar vários arquivos com um comando:

  • Todos os arquivos devem existir no mesmo diretório.

  • Os arquivos devem ser arquivos de texto, arquivos gzip ou uma combinação de arquivos de texto e gzip.

  • Nenhum arquivo pode conter informações de cabeçalho.

  • Todos os arquivos devem usar o mesmo tipo de codificação de caracteres. Veja a opção -e.

  • Todos os arquivos devem ser carregados na mesma tabela.

  • Todos os arquivos serão concatenados e carregados como se fossem um arquivo, e as linhas rejeitadas irão para um único arquivo de rejeição.

Exemplos:

  • -i \\loadserver\loads\daily\*.gz

  • -i \\loadserver\loads\daily\*.txt

  • -i \\loadserver\loads\daily\monday.*

  • -i \\loadserver\loads\daily\monday.txt

  • -i \\loadserver\loads\daily\*

-R load_failure_file_name
Se houver falhas de carregamento, o dwloader armazenará a linha que não foi carregada e a descrição e informações da falha em um arquivo chamado load_failure_file_name. Se esse arquivo já existir, o dwloader substituirá o arquivo existente. load_failure_file_name é criado quando ocorre a primeira falha. Se todas as linhas forem carregadas, load_failure_file_name não será criado.

-fh number_header_rows
O número de linhas que devem ser ignoradas no início de source_data_file_name. O padrão é 0.

<variable_length_column_options>
As opções para um source_data_file_name que tem colunas de comprimento variável delimitadas por caracteres. Por padrão, source_data_file_name contém caracteres ASCII em colunas de comprimento variável.

Para arquivos ASCII, NULLs são representados pela colocação de delimitadores de forma consecutiva. Por exemplo, em um arquivo delimitado por pipe ("|"), um NULL é indicado por "||". Em um arquivo delimitado por vírgula, um NULL é indicado por ",,". Além disso, a opção -E (--emptyStringAsNull) deve ser especificada. Veja abaixo para obter mais informações sobre -E.

-e character_encoding
Especifica um tipo de codificação de caracteres para os dados que serão carregados do arquivo de dados. As opções são ASCII (padrão), UTF8, UTF16 ou UTF16BE, em que UTF16 é little endian e UTF16BE é big endian. Essas opções diferenciam maiúsculas de minúsculas.

-t field_delimiter
O delimitador para cada campo (coluna) na linha. O delimitador de campo é um ou mais dos caracteres de escape ASCII ou valores hexadecimais ASCII.

Nome Caractere de escape Caractere hexadecimal
Tabulação \t 0x09
CR (retorno de carro) \r 0x0d
LF (alimentação de linha) \n 0x0a
CRLF \r\n 0x0d0x0a
Vírgula ',' 0x2c
Aspas duplas \" 0x22
Aspas simples \' 0x27

Para especificar o caractere de pipe na linha de comando, coloque-o entre aspas duplas, "|". Isso evitará erros de interpretação pelo analisador de linha de comando. Outros caracteres são colocados entre aspas simples.

Exemplos:

-t "|"

-t ' '

-t 0x0a

-t \t

-t '~|~'

-r row_delimiter
O delimitador para cada linha do arquivo de dados de origem. O delimitador de linha é um ou mais valores ASCII.

Para especificar um CR (retorno de carro), LF (alimentação de linha) ou caractere de tabulação como delimitador, você pode usar os caracteres de escape (\r, \n, \t) ou seus valores hexadecimais (0x, 0d, 09). Para especificar outros caracteres especiais como delimitadores, use o valor hexadecimal respectivo.

Exemplos de CR+LF:

-r \r\n

-r 0x0d0x0a

Exemplos de CR:

-r \r

-r 0x0d

Exemplos de LF:

-r \n

-r 0x0a

Uma LF é necessária para Unix. Um CR é necessário para Windows.

-s string_delimiter
O delimitador para o campo tipo de dados String de um arquivo de entrada delimitado por texto. O delimitador de cadeia de caracteres é um ou mais valores ASCII. Ele pode ser especificado como um caractere (por exemplo, -s *) ou como um valor hexadecimal (por exemplo, -s 0x22 para uma aspa dupla).

Exemplos:

-s *

-s 0x22

< fixed_width_column_options>
As opções para um arquivo de dados de origem que tem colunas de comprimento fixo. Por padrão, source_data_file_name contém caracteres ASCII em colunas de comprimento variável.

Não é permitido colunas de largura fixa quando -e é UTF8.

-w fixed_width_config_file
O caminho e o nome do arquivo de configuração que especifica o número de caracteres em cada coluna. Todo campo deve ser especificado.

Esse arquivo deve residir no servidor de carregamento. O caminho pode ser um UNC, caminho absoluto ou relativo. Cada linha em fixed_width_config_file contém o nome de uma coluna e o número de caracteres dessa coluna. Há uma linha por coluna, como exibido abaixo, e a ordem no arquivo deve corresponder à ordem na tabela de destino:

column_name=num_chars

column_name=num_chars

Exemplo de arquivo de configuração com largura fixa:

SalesCode=3

SalesID=10

Linhas de exemplo em source_data_file_name:

230Shirts0056

320Towels1356

No exemplo anterior, a primeira linha carregada terá SalesCode='230' e SalesID='Shirts0056'. A segunda linha carregada terá SalesCode='320' e SaleID='Towels1356'.

Para obter mais informações sobre como lidar com espaços à esquerda e à direita ou conversão de tipo de dados no modo de largura fixa, consulte Regras de conversão de tipo de dados para o dwloader.

-e character_encoding
Especifica um tipo de codificação de caracteres para os dados que serão carregados do arquivo de dados. As opções são ASCII (padrão), UTF8, UTF16 ou UTF16BE, em que UTF16 é little endian e UTF16BE é big endian. Essas opções diferenciam maiúsculas de minúsculas.

Não é permitido colunas de largura fixa quando -e é UTF8.

-r row_delimiter
O delimitador para cada linha do arquivo de dados de origem. O delimitador de linha é um ou mais valores ASCII.

Para especificar um CR (retorno de carro), LF (alimentação de linha) ou caractere de tabulação como delimitador, você pode usar os caracteres de escape (\r, \n, \t) ou seus valores hexadecimais (0x, 0d, 09). Para especificar outros caracteres especiais como delimitadores, use o valor hexadecimal respectivo.

Exemplos de CR+LF:

-r \r\n

-r 0x0d0x0a

Exemplos de CR:

-r \r

-r 0x0d

Exemplos de LF:

-r \n

-r 0x0a

Uma LF é necessária para Unix. Um CR é necessário para Windows.

-D { amd | adm | mda | mad | dma | dam | custom_date_format }
Especifica a ordem do mês (m), dia (d) e ano (a) para todos os campos datetime no arquivo de entrada. A ordem padrão é amd. Para especificar vários formatos de ordem para o mesmo arquivo de origem, use a opção -dt.

amd | dma
adm e dma permitem os mesmos formatos de entrada. Ambos permitem que o ano esteja no início ou no final da data. Por exemplo, para os formatos de data adm e dma, você pode ter 2013-02-03 ou 02-03-2013 no arquivo de entrada.

adm
Você só pode carregar entradas formatadas como adm em colunas do tipo de dados datetime e smalldatetime. Não é possível carregar valores adm em uma coluna do tipo de dados datetime2, date ou datetimeoffset.

mda
mda permite <mês><espaço><dia><vírgula><ano>.

Exemplos de dados de entrada mda para 1º de janeiro de 1975:

  • 1º de janeiro, 1975

  • 1º de janeiro, 75

  • Jan/1/75

  • 01011975

mad
Exemplos de arquivo de entrada para 04 de março de 2010: 03-2010-04, 3/2010/4

dam
Exemplos de arquivo de entrada para 04 de março de 2010: 04-2010-03, 4/2010/3

custom_date_format
custom_date_format é um formato de data personalizado (por exemplo, MM/dd/aaaa) e incluído apenas para compatibilidade com versões anteriores. O dwloader não impõe o formato de data personalizado. Em vez disso, quando você especifica um formato de data personalizado, o dwloader o converterá na configuração correspondente de amd, adm, mda, mad, dam ou dma.

Por exemplo, se você especifica -D MM/dd/aaaa, o dwloader espera que toda a entrada de data seja ordenada começando pelo mês, depois dia e, por fim, ano (mda). Ele não impõe meses de dois caracteres, dias de dois dígitos e anos de quatro dígitos, conforme especificado pelo formato de data personalizado. Estão são alguns exemplos de como as datas podem ser formatadas no arquivo de entrada quando o formato de data é -D MM/dd/aaaa: 01/02/2013, Jan.02.2013, 1/2/2013

Para obter informações de formatação mais abrangentes, consulte Regras de conversão de tipo de dados para o dwloader.

-dt datetime_format_file
Cada formato datetime é especificado em um arquivo chamado datetime_format_file. Diferente dos parâmetros de linha de comando, os parâmetros de arquivo que incluem espaços não devem ser colocados entre aspas duplas. Não é possível alterar o formato datetime ao carregar dados. O arquivo de dados de origem e sua coluna correspondente na tabela de destino devem ter o mesmo formato.

Cada linha contém o nome de uma coluna na tabela de destino e o formato datetime.

Exemplos:

LastReceiptDate=ymd

ModifiedDate=dym

-d staging_database_name
O nome do banco de dados que conterá a tabela de preparo. O padrão é o banco de dados especificado com a opção -T, que é o banco de dados da tabela de destino. Para obter mais informações sobre como usar um banco de dados de preparo, consulte Criar o banco de dados de preparo.

-M load_mode_option
Especifica se deve-se acrescentar, executar upsert ou recarregar os dados. O modo padrão é acrescentar.

append
O Carregador insere linhas no final das linhas existentes na tabela de destino.

fastappend
O Carregador insere linhas diretamente, sem usar uma tabela temporária, no final das linhas existentes na tabela de destino. fastappend requer a opção multitransação (-m). Não é possível especificar um banco de dados de preparo ao usar fastappend. Não há reversão com fastappend. Ou seja, a recuperação de um carregamento com falha ou anulado deve ser manipulada por seu processo de carregamento.

Executar upsert -K merge_column [ ,...n ]
O Carregador usa a instrução Merge do SQL Server para atualizar linhas existentes e inserir novas linhas.

A opção -K especifica qual ou quais colunas serão usadas como base da mesclagem. Essas colunas formam uma chave de mesclagem, que deve representar uma linha exclusiva. Se a chave de mesclagem existir na tabela de destino, a linha será atualizada. Se a chave de mesclagem não existir na tabela de destino, a linha será acrescentada.

Para tabelas distribuídas por hash, a chave de mesclagem deve ser ou incluir a coluna de distribuição.

Para tabelas replicadas, a chave de mesclagem é a combinação de uma ou mais colunas. Essas colunas são especificadas de acordo com as necessidades do aplicativo.

Várias colunas devem ser separadas por vírgulas sem espaços ou separadas por vírgulas com espaços e colocadas entre aspas simples.

Se duas linhas na tabela de origem tiverem valores de chave de mesclagem correspondentes, as respectivas linhas deverão ser idênticas.

recarregar
O Carregador trunca a tabela de destino antes de inserir os dados de origem.

-b batchsize
Recomendado apenas para uso pelo Suporte da Microsoft, batchsize é o tamanho de lote do SQL Server para a cópia em massa que o DMS executa em instâncias do SQL Server nos nós de computação. Quando batchsize for especificado, o SQL Server PDW substituirá o tamanho do lote de carregamento calculado dinamicamente para cada carregamento.

A partir do SQL Server 2012 PDW, o nó de controle calcula dinamicamente um tamanho de lote para cada carregamento por padrão. Esse cálculo automático é baseado em vários parâmetros: tamanho da memória, tipo da tabela de destino, esquema da tabela de destino, tipo de carregamento, tamanho do arquivo e classe de recurso do usuário.

Por exemplo, se o modo de carregamento for FASTAPPEND e a tabela tiver um índice columnstore clusterizado, o padrão do SQL Server PDW será usar um tamanho de lote de 1.048.576 para que os grupos de linhas se tornem CLOSED e carreguem diretamente no columnstore sem passar pelo armazenamento delta. Se a memória não permitir o tamanho do lote de 1.048.576, o dwloader escolherá um tamanho de lote menor.

Se o tipo de carregamento for FASTAPPEND, o batchsize será aplicado ao carregamento de dados na tabela. Se não, batchsize será aplicado ao carregamento de dados na tabela de preparo.

<reject_options>
Especifica as opções para determinar o número de falhas de carregamentos permitidas pelo Carregador. Se as falhas de carregamento excederem o limite, o carregador interromperá e não confirmará nenhuma linha.

-rt { value | percentage }
Especifica se o -reject_value na opção -rv reject_value é um número literal de linhas (valor) ou uma taxa de falha (porcentagem). O padrão é valor.

A opção de porcentagem é um cálculo em tempo real que ocorre em intervalos de acordo com a opção -rs.

Por exemplo, se o Carregador tentar carregar 100 linhas e 25 falharem e 75 tiverem êxito, a taxa de falha será de 25%.

-rv reject_value
Especifica o número ou a porcentagem de rejeições de linha permitidas antes de interromper o carregamento. A opção -rt determina se reject_value se refere ao número ou à porcentagem de linhas.

O reject_value padrão é 0.

Quando usado com o valor -rt, o carregador interromperá o carregamento quando a contagem de linhas rejeitadas exceder reject_value.

Quando usado com a porcentagem -rt, o carregador calculará a porcentagem em intervalos (opção -rs). Portanto, a porcentagem de linhas com falha poderá exceder reject_value.

-rs reject_sample_size
Usado com a opção -rt percentage para especificar as verificações de porcentagem incremental. Por exemplo, se reject_sample_size for 1000, o Carregador calculará o percentual de linhas com falha depois de tentar carregar 1000 linhas. Ele continuará recalculando o percentual de linhas com falha depois de tentar importar cada 1.000 linhas adicionais.

-c
Remove caracteres de espaço em branco dos lados esquerdo e direito dos campos char, nchar, varchar e nvarchar. Converte cada campo que contém apenas caracteres de espaço em branco na cadeia de caracteres vazia.

Exemplos:

' ' é truncado para ''

' abc ' é truncado para 'abc'

Quando -c é usado com -E, a operação -E ocorre primeiro. Os campos que contêm apenas caracteres de espaço em branco são convertidos para a cadeia de caracteres vazia e não para NULL.

-E
Converte cadeias de caracteres vazias em NULL. O padrão é não realizar essas conversões.

-m
Use o modo multitransação para a segunda fase de carregamento: carregar dados da tabela de preparo em uma tabela distribuída.

Com -m, o SQL Server PDW executa e faz commit de carregamentos em paralelo. Isso é muito mais rápido do que o modo de carregamento padrão, mas não é seguro para transações.

Sem -m, o SQL Server PDW executa e faz commit em série de carregamentos nas distribuições dentro de cada nó de computação e ao mesmo tempo entre os nós de computação. Esse método é mais lento do que o modo de multitransação, mas é seguro para transações.

-m é opcional para append, reload e upsert.

-m é necessário para fastappend.

-m não pode ser usado com tabelas replicadas.

-m se aplica apenas à segunda fase de carregamento. Não se aplica à primeira fase de carregamento: carregamento de dados na tabela de preparo.

Não há reversão com o modo multitransações. Ou seja, a recuperação de um carregamento com falha ou anulado deve ser manipulada por seu processo de carregamento.

Recomendamos usar -m somente ao carregar em uma tabela vazia, para que possa recuperar sem perder dados. Para recuperar de uma falha de carregamento: remova a tabela de destino, resolva o problema de carregamento, recrie a tabela de destino e execute o carregamento de novo.

-N
Verifique se o dispositivo de destino tem um certificado SQL Server PDW válido de uma autoridade confiável. Use isso para ajudar a garantir que seus dados não sejam sequestrados por um invasor e enviados para um local não autorizado. O certificado já deve estar instalado no dispositivo. O certificado só pode ser instalado se o administrador do dispositivo fizer a instalação usando a ferramenta Configuration Manager. Pergunte ao administrador do dispositivo se não tiver certeza se o dispositivo tem um certificado confiável instalado.

-se
Ignora o carregamento de arquivos vazios. Ele também ignora a descompactação de arquivos gzip vazios.

-l
Disponível com a atualização CU7.4, especifica o comprimento máximo da linha (em bytes) que pode ser carregado. Os valores válidos são inteiros entre 32768 e 33554432. Use somente quando precisar carregar linhas grandes (maiores que 32 KB), pois isso alocará mais memória no cliente e no servidor.

Valores do código de retorno

0 (êxito) ou outro valor inteiro (falha)

Em uma janela Comando ou arquivo em lotes, use errorlevel para exibir o código de retorno. Por exemplo:

dwloader  
echo ReturnCode=%errorlevel%  
if not %errorlevel%==0 echo Fail  
if %errorlevel%==0 echo Success  

Ao usar o PowerShell, use $LastExitCode.

Permissões

Requer permissão LOAD e permissões aplicáveis (INSERT, UPDATE, DELETE) na tabela de destino. Requer a permissão CREATE (para criar uma tabela temporária) no banco de dados de preparo. Se um banco de dados de preparo não for usado, a permissão CREATE será necessária no banco de dados de destino.

Comentários gerais

Para obter informações sobre conversões de tipo de dados ao carregar com o dwloader, consulte Regras de conversão de tipo de dados para o dwloader.

Se um parâmetro incluir um ou mais espaços, coloque-o entre aspas duplas.

Você deve executar o Carregador pela localização de instalação. O executável dwloader vem pré-instalado no dispositivo e está localizado no diretório C:\Arquivos de Programas\Microsoft SQL Server Data Warehouse\DWLoader.

Você pode substituir um parâmetro especificado no arquivo de parâmetro (opção -f) especificando-o como um parâmetro de linha de comando.

É possível executar várias instâncias do Carregador simultaneamente. O número máximo de instâncias do Carregador é pré-configurado e não pode ser alterado.

Os dados carregados podem exigir mais ou menos espaço no dispositivo do que na localização de origem. Você pode testar importações com subconjuntos de dados para estimar o consumo de disco.

Embora o dwloader seja um processo de transações que reverterá normalmente em caso de falha, ele não pode ser revertido depois que o carregamento em massa for concluído. Para cancelar um processo ativo do dwloader, digite CTRL+C.

Limitações e Restrições

O tamanho total de todos os carregamentos que ocorrem simultaneamente deve ser menor do que LOG_SIZE para o banco de dados. Recomendamos que o tamanho total de todos os carregamentos simultâneos seja inferior a 50% do LOG_SIZE. Para obedecer essa limitação de tamanho, você pode dividir grandes carregamentos em vários lotes. Para obter mais informações sobre LOG_SIZE, consulte CREATE DATABASE

Ao carregar vários arquivos com um comando de carregamento, todas as linhas rejeitadas são gravadas no mesmo arquivo de rejeição. O arquivo de rejeição não mostra qual arquivo de entrada contém cada linha rejeitada.

A cadeia de caracteres vazia não deve ser usada como um delimitador. O uso de uma cadeia de caracteres vazia como delimitador de linhas causará falha no carregamento. Quando usada como delimitador de colunas, o carregamento ignora o delimitador e continua a usar o padrão "|" como o delimitador de colunas. Quando usada como delimitador de cadeia de caracteres, a cadeia de caracteres vazia é ignorada e o comportamento padrão é aplicado.

Comportamento de bloqueio

O comportamento de bloqueio do dwloader varia dependendo da load_mode_option.

  • acréscimo - Acréscimo é a opção recomendada e a mais comum. Acrescentar carrega dados em uma tabela de preparo. O bloqueio é descrito em mais detalhes abaixo.

  • acréscimo rápido - O acréscimo rápido é carregado diretamente na tabela final com um bloqueio de tabela ExclusiveUpdate. É o único modo que não usa uma tabela de preparo.

  • recarga - Recarga carrega os dados em uma tabela de preparo e requer um bloqueio exclusivo na tabela de preparo e na tabela final. A recarga não é recomendada para operações simultâneas.

  • upsert - Upsert carrega dados em uma tabela de preparo e executa uma operação de mesclagem da tabela de preparo para a tabela final. Upsert não requer bloqueios exclusivos na tabela final. O desempenho pode variar ao usar upsert. Teste o comportamento em seu ambiente.

Comportamento de bloqueio

Bloqueio do modo de acréscimo

O acréscimo pode ser executado no modo multitransacional (usando o argumento -m), mas não é seguro para transações. Portanto, acréscimo deve ser usado como uma operação transacional (sem usar o argumento -m). Infelizmente, durante a operação final INSERT-SELECT, o modo transacional é cerca de seis vezes mais lento do que o modo multitransacional.

O modo de acréscimo carrega dados em duas fases. A fase um carrega dados do arquivo de origem em uma tabela de preparo de forma simuktânea (pode ocorrer fragmentação). A fase dois carrega os dados da tabela de preparo para a tabela final. A segunda fase realiza uma operação INSERT INTO... SELECT WITH (TABLOCK). A tabela a seguir mostra o comportamento de bloqueio na tabela final e o comportamento de log ao usar o modo de acréscimo:

Tipo de Tabela Multitransação
Modo (-m)
A tabela está vazia Compatível com simultaneidade Logging
Heap Sim Sim Sim Mínimo
Heap Sim Não Sim Mínimo
Heap Não Sim No Mínimo
Heap Não No No Mínimo
CI Sim Sim No Mínimo
CI Sim Não Sim Completo
CI Não Sim No Mínimo
CI Não No Sim Completo

A tabela acima mostra o dwloader usando o modo de acréscimo carregando em um heap ou uma tabela de CI (índice clusterizado), com ou sem o sinalizador multitransacional e carregando em uma tabela vazia ou uma tabela não vazia. O comportamento de bloqueio e registro em log de cada combinação de carregamento é exibido na tabela. Por exemplo, carregar a (2ª) fase com o modo de acréscimo em um índice clusterizado sem modo multitransacional e em uma tabela vazia fará com que o PDW crie um bloqueio exclusivo na tabela e o registro em log seja mínimo. Isso significa que um cliente não poderá carregar a (2ª) fase e a consulta ao mesmo tempo em uma tabela vazia. No entanto, ao carregar com a mesma configuração em uma tabela não vazia, o PDW não emitirá um bloqueio exclusivo na tabela, permitindo a simultaneidade. Infelizmente, ocorre o log completo, retardando o processo.

Exemplos

R. Exemplo simples do dwloader

O exemplo a seguir mostra a iniciação do Carregador com apenas as opções necessárias selecionadas. Outras opções são obtidas do arquivo de configuração global, loadparamfile.txt.

Exemplo usando a Autenticação do SQL Server.

--Load over Ethernet  
dwloader.exe -S 10.192.63.148 -U mylogin -P 123jkl -f /configfiles/loadparamfile.txt  
  
--Load over InfiniBand to appliance named MyPDW  
dwloader.exe -S MyPDW-SQLCTL01 -U mylogin -P 123jkl -f /configfiles/loadparamfile.txt  

O mesmo exemplo usando a Autenticação do Windows.

--Load over Ethernet  
dwloader.exe -S 10.192.63.148 -W -f /configfiles/loadparamfile.txt  
  
--Load over InfiniBand to appliance named MyPDW  
dwloader.exe -S MyPDW-SQLCTL01 -W -f /configfiles/loadparamfile.txt  

Exemplo usando argumentos para um arquivo de origem e um arquivo de erro.

--Load over Ethernet  
dwloader.exe -U mylogin -P 123jkl -S 10.192.63.148  -i C:\SQLData\AWDimEmployees.csv -T AdventureWorksPDW2012.dbo.DimEmployees -R C:\SQLData\LoadErrors  

B. Carregar dados em uma tabela do AdventureWorks

O exemplo a seguir faz parte de um script em lotes que carrega dados no AdventureWorksPDW2012. Para exibir o script completo, abra o arquivo aw_create.bat fornecido com o pacote de instalação do AdventureWorksPDW2012.

O trecho de script a seguir usa o dwloader para carregar dados nas tabelas DimAccount e DimCurrency. Esse script está usando um endereço Ethernet. Se estivesse usando InfiniBand, o servidor seria <appliance_name>-SQLCTL01.

set server=10.193.63.134  
set user=<MyUser>  
set password=<MyPassword>  
  
set schema=AdventureWorksPDW2012.dbo  
set load="C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe"  
set mode=reload  
  
--Loads data into the AdventureWorksPDW2012.dbo.DimAccount table  
--Source data is stored in the file DimAccount.txt,   
--which is in the current directory.  
  
set t1=DimAccount  
%load% -S %server% -E -M %mode% -e Utf16 -i .\%t1%.txt -T %schema%.%t1% -R %t1%.bad -t "|" -r \r\n -U %user% -P %password%   
  
--Loads data from the DimCurrency.txt file into  
--AdventureWorksPDW2012.dbo.DimCurrency  
set t1=DimCurrency  
%load% -S %server% -E -M %mode% -e Utf16 -i .\%t1%.txt -T %schema%.%t1% -R %t1%.bad -t "|" -r \r\n -U %user% -P %password%  

Abaixo, veja o DDL para a tabela DimAccount.

CREATE TABLE DimAccount(  
AccountKey int NOT NULL,  
ParentAccountKey int,  
AccountCodeAlternateKey int,  
ParentAccountCodeAlternateKey int,  
AccountDescription nvarchar(50),  
AccountType nvarchar(50),  
Operator nvarchar(50),  
CustomMembers nvarchar(300),  
ValueType nvarchar(50),  
CustomMemberOptions nvarchar(200))  
with (CLUSTERED INDEX(AccountKey),  
DISTRIBUTION = REPLICATE);  

Abaixo, veja um exemplo do arquivo de dados, DimAccount.txt, que contém dados para carregar na tabela DimAccount.

--Sample of data in the DimAccount.txt load file.  
  
1||1||Balance Sheet||~||Currency|  
2|1|10|1|Assets|Assets|+||Currency|  
3|2|110|10|Current Assets|Assets|+||Currency|  
4|3|1110|110|Cash|Assets|+||Currency|  
5|3|1120|110|Receivables|Assets|+||Currency|  
6|5|1130|1120|Trade Receivables|Assets|+||Currency|  
7|5|1140|1120|Other Receivables|Assets|+||Currency|  
8|3|1150|110|Allowance for Bad Debt|Assets|+||Currency|  
9|3|1160|110|Inventory|Assets|+||Currency|  
10|9|1162|1160|Raw Materials|Assets|+||Currency|  
11|9|1164|1160|Work in Process|Assets|+||Currency|  
12|9|1166|1160|Finished Goods|Assets|+||Currency|  
13|3|1170|110|Deferred Taxes|Assets|+||Currency|  

C. Carregar dados da linha de comando

O script no Exemplo B pode ser substituído com a inserção dos parâmetros na linha de comando, conforme mostrado no exemplo a seguir.

C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe -S <Control node IP> -E -M reload -e UTF16 -i .\DimAccount.txt -T AdventureWorksPDW2012.dbo.DimAccount -R DimAccount.bad -t "|" -r \r\n -U <login> -P <password>  

Descrição dos parâmetros de linha de comando:

  • C:\Arquivos de Programas\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe é a localização de instalação do dwloader.exe.

  • -S é seguido pelo endereço IP do nó de controle.

  • -E especifica o carregamento de cadeias de caracteres vazias como NULL.

  • -M reload especifica para truncar a tabela de destino antes de inserir os dados de origem.

  • -e UTF16 indica que o arquivo de origem usa o tipo de codificação de caracteres little endian.

  • -i .\DimAccount.txt especifica que os dados estão em um arquivo chamado DimAccount.txt que existe no diretório atual.

  • -T AdventureWorksPDW2012.dbo.DimAccount especifica o nome em três partes da tabela para receber os dados.

  • -R DimAccount.bad especifica que as linhas que não carregarem serão gravadas em um arquivo chamado DimAccount.bad.

  • -t "|" indica que os campos no arquivo de entrada, DimAccount.txt, são separados pelo caractere de pipe.

  • -r \r\n especifica que cada linha em DimAccount.txt termina com um retorno de carro e um caractere de alimentação de linha.

  • -U <login_name> -P <password> especifica o logon e senha para o logon que tem permissões para executar o carregamento.