Partilhar via


dwloader Carregador de Linha de Comando para Armazém de Dados Paralelo

dwloader é uma ferramenta de linha de comandos Parallel Data Warehouse (PDW) que carrega linhas de tabela em massa numa tabela existente. Ao carregar linhas, pode adicionar todas as linhas ao final da tabela (modo de anexação ou modo fastappend), anexar novas linhas e atualizar as existentes (modo upsert), ou eliminar todas as linhas existentes antes de carregar e depois inserir todas as linhas numa tabela vazia (modo de recarregar).

Processo de carregamento de dados

  1. Prepara os dados de origem.

    Use o seu próprio processo ETL para criar os dados de origem que deseja carregar. Os dados de origem devem ser formatados para corresponder ao esquema da tabela de destino. Armazene os dados de origem num ou mais ficheiros de texto e copie os ficheiros de texto para o mesmo diretório no seu servidor de carga. Para informações sobre o servidor de carga, consulte Adquirir e Configurar um Servidor de Carregamento

  2. Prepara as opções de carregamento.

    Decide que opções de carregamento vais usar. Guarda as opções de carregamento num ficheiro de configuração. Copie o ficheiro de configuração para uma localização local no seu 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.

    Decide como queres que o dwloader gere as linhas que não carregam. Para realizar a carga, o dwloader carrega primeiro os dados para uma tabela de staging e depois transfere os dados para a tabela de destino. À medida que o Loader carrega dados na tabela de staging, regista o número de linhas que não foram carregadas. Por exemplo, linhas que não estão formatadas corretamente falham em carregar. As linhas falhadas são copiadas para um ficheiro de rejeição. Por defeito, a carga aborta após a primeira rejeição, a menos que especifique um limiar de rejeição diferente.

  4. Instala dwloader.

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

  1. Executa dwloader.

    Inicie sessão no servidor de Carregamento e execute o dwloader.exe executável com as opções de linha de comandos apropriadas.

  2. Verifique os resultados.

    Podes verificar o ficheiro de linhas falhadas (especificado com -R) para ver se alguma linha não carregou. Se este ficheiro estiver vazio, todas as linhas foram carregadas com sucesso. O DWloader é transacional, por isso, se algum passo falhar (exceto as linhas rejeitadas), todos os passos revertem ao seu 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 ]   
}  

Arguments

-h
Apresenta informações simples de ajuda sobre como usar o Loader. A ajuda só aparece se não forem especificados outros parâmetros de linha de comando.

-Ulogin_name
Um login válido de autenticação SQL Server com permissões apropriadas para realizar a carga.

-P<Palavra-passe>
A palavra-passe para um login_name de autenticação SQL Server.

-W
Use a autenticação do Windows. (Não é necessário login_name nem palavra-passe .)

-fparameter_file_name
Use um ficheiro de parâmetros, parameter_file_name, em vez de parâmetros de linha de comandos. parameter_file_name pode conter qualquer parâmetro de linha de comandos, exceto user_name e palavra-passe. Se um parâmetro for especificado na linha de comandos e no ficheiro de parâmetros, a linha de comandos sobrepõe o parâmetro do ficheiro.

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

Examples:

rt=percentage

rv=25

-Starget_appliance
Especifica o appliance SQL Server PDW que irá receber os dados carregados.

Para ligações Infiniband, target_appliance é especificado como <appliance-name-SQLCTL01>. Para configurar esta ligação nomeada, consulte Configurar Adaptadores de Rede InfiniBand.

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

Se omitido, o dwloader assume o valor especificado na instalação.

-Ttarget_database_name.[esquema]. table_name
O nome em três partes para a tabela de destinos.

-Isource_data_location
A localização de um ou mais ficheiros de origem a carregar. Cada ficheiro fonte deve ser um ficheiro de texto ou um ficheiro de texto comprimido com gzip. Apenas um ficheiro fonte pode ser comprimido em cada ficheiro gzip.

Para formatar um ficheiro fonte:

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

  • Cada linha num ficheiro de origem contém os dados de uma linha da tabela. Os dados de origem devem corresponder ao esquema da tabela de destino. A ordem das colunas e os tipos de dados também devem coincidir. Cada campo na linha representa uma coluna na tabela de destinos.

  • Por defeito, os campos são de comprimento variável e 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, utilize 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 carga.

  • Para especificar todos os ficheiros num diretório, introduza o caminho do diretório seguido do carácter coringa *. O loader não carrega ficheiros de quaisquer subdiretórios que estejam na localização de dados de origem. O loader comete erros quando existe um diretório num ficheiro gzip.

  • Para especificar alguns dos ficheiros num diretório, use uma combinação de caracteres e o coringa *.

Para carregar vários ficheiros com um único comando:

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

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

  • Nenhum dos ficheiros pode conter informação de cabeçalho.

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

  • Todos os ficheiros devem ser carregados na mesma tabela.

  • Todos os ficheiros serão concatenados e carregados como se fossem um só ficheiro, e as linhas rejeitadas irão para um único ficheiro rejeitado.

Examples:

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

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

  • -Eu \carrego o servidor\cargas\diariamente\segunda-feira.*

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

  • -Eu \\carrego o servidor\carregas\diariamente\*

-Rload_failure_file_name
Se houver falhas de carga, o dwloader armazena a linha que falhou ao carregar e a descrição da falha a informação de falha num ficheiro chamado load_failure_file_name. Se este ficheiro já existir, o dwloader irá sobrescrever o ficheiro existente. load_failure_file_name é criado quando ocorre a primeira falha. Se todas as linhas carregarem com sucesso, load_failure_file_name não é criado.

-fhnumber_header_rows
O número de linhas (filas) a ignorar no início de source_data_file_name. O padrão é 0.

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

Para ficheiros ASCII, os NULLs são representados pela colocação de delimitadores consecutivamente. Por exemplo, num ficheiro delimitado por pipe ("|"), um NULL é indicado por "||". Num ficheiro delimitado por vírgula, um NULL é indicado por ",,". Além disso, a opção -E (--emptyStringAsNull) deve ser especificada. Para mais informações sobre -E, veja abaixo.

-echaracter_encoding
Especifica um tipo de codificação de caracteres para os dados a serem carregados a partir do ficheiro de dados. As opções são ASCII (por defeito), UTF8, UTF16, ou UTF16BE, onde UTF16 é de ordem de bytes pequena (little endian) e UTF16BE é de ordem de bytes grande (big endian). Estas opções não distinguem maiúsculas e minúsculas.

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

Nome Personagem de fuga Personagem Hex
Tab \t 0x09
Retorno de carro (CR) \r 0x0d
Alimentação de linha (LF) \n 0x0a
CRLF \r\n 0x0d0x0a
Vírgula ',' 0x2c
Citação dupla \" 0x22
Citação única \' 0x27

Para especificar o carácter pipe na linha de comandos, inclua-o com aspas duplas, "|". Isto evitará interpretações erradas pelo parser da linha de comandos. Outros caracteres são delimitados por aspas simples.

Examples:

-t "|"

-t ' '

-T 0x0a

-t \t

-t '~|~'

-rdelimitador_de_linhas
O delimitador para cada linha do ficheiro de dados de origem. O delimitador de linha é um ou mais valores ASCII.

Para especificar um retorno de carro (CR), um avançamento de linha (LF) ou um carácter tab como delimitador, pode usar os caracteres de escape (\r, \n, \t) ou os seus valores hexadecimais (0x, 0d, 09). Para especificar quaisquer outros caracteres especiais como delimitadores, use o seu valor hexadecimal.

Exemplos de CR+LF:

-R \r\n

-r 0x0d0x0a

Exemplos de CR:

-r \r

-r 0x0d

Exemplos de LF:

-r \n

-r 0x0a

É necessário um LF para o Unix. É necessário um CR para o Windows.

-sstring_delimiter
O delimitador para o campo de tipo de dados string de um ficheiro de entrada com delimitação por texto. O delimitador de string é um ou mais valores ASCII. Pode ser especificado como um caráter (por exemplo, -s *) ou como um valor hexadecimal (por exemplo, -s 0x22 para aspas duplas).

Examples:

-s *

-s 0x22

< opções_de_coluna_de_largura_fixa>
As opções para um ficheiro de dados de origem que tem colunas de comprimento fixo. Por defeito, source_data_file_name contém caracteres ASCII em colunas de comprimento variável.

Colunas de largura fixa não são suportadas quando -e é UTF8.

-wfixed_width_config_file
Caminho e nome do ficheiro de configuração que especifica o número de caracteres em cada coluna. Cada campo tem de ser especificado.

Este ficheiro deve residir no servidor de carregamento. O percurso pode ser UNC, relativo ou absoluto. 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, da seguinte forma, e a ordem no ficheiro deve corresponder à ordem da tabela de destino:

column_name=num_chars

column_name=num_chars

Exemplo de ficheiro de configuração de largura fixa:

SalesCode=3

SalesID=10

Exemplos de linhas em source_data_file_name:

230Camisas 0056

320Toalhas1356

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

Para informações sobre como gerir espaços iniciais e finais ou a conversão de tipos de dados no modo de largura fixa, veja regras de conversão de tipos de dados para dwloader.

-echaracter_encoding
Especifica um tipo de codificação de caracteres para os dados a serem carregados a partir do ficheiro de dados. As opções são ASCII (por defeito), UTF8, UTF16, ou UTF16BE, onde UTF16 é de ordem de bytes pequena (little endian) e UTF16BE é de ordem de bytes grande (big endian). Estas opções não distinguem maiúsculas e minúsculas.

Colunas de largura fixa não são suportadas quando -e é UTF8.

-rdelimitador_de_linhas
O delimitador para cada linha do ficheiro de dados de origem. O delimitador de linha é um ou mais valores ASCII.

Para especificar um retorno de carro (CR), um avançamento de linha (LF) ou um carácter tab como delimitador, pode usar os caracteres de escape (\r, \n, \t) ou os seus valores hexadecimais (0x, 0d, 09). Para especificar quaisquer outros caracteres especiais como delimitadores, use o seu valor hexadecimal.

Exemplos de CR+LF:

-R \r\n

-r 0x0d0x0a

Exemplos de CR:

-r \r

-r 0x0d

Exemplos de LF:

-r \n

-r 0x0a

É necessário um LF para o Unix. É necessário um CR para o Windows.

-D { ymd | ydm | mdy | myd | dmy | dym | custom_date_format }
Especifica a ordem do mês (m), dia (d) e ano (y) para todos os campos de data-hora no ficheiro de entrada. A ordem padrão é YMD. Para especificar múltiplos formatos de encomenda para o mesmo ficheiro fonte, use a opção -dt.

YMD | dmy
O YDM e o DMY permitem os mesmos formatos de entrada. Ambos permitem que o ano seja no início ou no final da data. Por exemplo, para os formatos de data ydm e dmy, pode ter 2013-02-03 ou 02-03-2013 no ficheiro de entrada.

YDM
Só podes carregar entrada formatada como ydm em colunas de tipo de dados datetime e smalldatetime. Não pode carregar valores ydm numa coluna dos tipos de dados datetime2, date ou datetimeoffset.

MDY
O MDY permite espaço para mês<, dia,><><vírgula, ano><.><>

Exemplos de dados de entrada mdy para 1 de janeiro de 1975:

  • 1 de janeiro de 1975

  • 01 de janeiro de 75

  • Jan/1/75

  • 01011975

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

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

formato_de_data_personalizado
custom_date_format é um formato de data personalizado (por exemplo, MM/dd/yyyy) e está incluído apenas para compatibilidade retroativa. O DWloader não aplica o formato de data personalizado. Em vez disso, quando especificas um formato de data personalizado, o dwloader converte-o para a configuração correspondente de ymd, ydm, mdy, myd, dym ou dmy.

Por exemplo, se especificar -D MM/dd/yyyy, o dwloader espera que toda a entrada de data seja encomendada com mês primeiro, depois dia e depois ano (mdy). Não aplica meses de 2 caracteres, dias de 2 dígitos e anos de 4 dígitos especificados pelo formato de data personalizado. Aqui estão alguns exemplos de formas como as datas podem ser formatadas no ficheiro de entrada quando o formato de data é -D MM/dd/aaaaaa: 02/01/2013, 02.02.2013, 2/1/2013

Para informações de formatação mais completas, consulte regras de conversão de tipos de dados para dwloader.

-dtdatetime_format_file
Cada formato de data-hora é especificado num ficheiro chamado datetime_format_file. Ao contrário dos parâmetros da linha de comandos, os parâmetros do ficheiro que incluem espaços não devem ser incluídos entre aspas duplas. Não podes alterar o formato de data-hora enquanto carregas os dados. O ficheiro de dados de origem e a sua correspondente coluna na tabela de destino devem ter o mesmo formato.

Cada linha contém o nome de uma coluna na tabela de destino e o seu formato de data-hora.

Examples:

LastReceiptDate=ymd

ModifiedDate=dym

-dstaging_database_name
O nome da base de dados que irá conter a tabela de preparação. O padrão é a base de dados especificada com a opção -T, que é a base de dados para a tabela de destino. Para mais informações sobre a utilização de uma base de dados de staging, consulte Criar a Staging Database.

-Mload_mode_option
Especifica se deve adicionar, atualizar ou recarregar dados. O modo padrão é acrescentar.

acrescentar
O Loader insere linhas no final das linhas existentes na tabela de destino.

fastappend
O Loader insere linhas diretamente, sem usar uma tabela temporária, até ao final das linhas existentes na tabela de destino. O fastappend requer a opção multi-transação (-m). Uma base de dados de staging não pode ser especificada ao usar o fastappend. Não há rollback com o fastappend, o que significa que a recuperação de uma carga que falhou ou foi abortada deve ser gerida pelo próprio processo de carregamento.

upsert -Kmerge_column [ ,... n ]
O Loader utiliza a instrução SQL Server Merge para atualizar linhas existentes e inserir novas linhas.

A opção -K especifica a coluna ou colunas em que se baseia a fusão. Estas colunas formam uma chave de fusão, que deve representar uma linha única. Se a chave de fusão existir na tabela de destino, a linha é atualizada. Se a chave de fusão não existir na tabela de destino, a linha é adicionada.

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

Para tabelas replicadas, a chave de fusão é a combinação de uma ou mais colunas. Estas colunas são especificadas de acordo com as necessidades da aplicação.

Múltiplas colunas devem estar separadas por vírgulas sem espaços, ou separadas por vírgulas por espaços e encerradas entre aspas simples.

Se duas linhas na tabela de origem tiverem valores de chave de fusão correspondentes, as respetivas linhas devem ser idênticas.

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

-bbatchsize
Recomendado apenas para uso pelo suporte da Microsoft, o tamanho de lote é o tamanho de lote do SQL Server para a cópia em massa que o DMS executa nas instâncias do SQL Server nos nós de computação. Quando o tamanho do lote é especificado, o PDW do SQL Server substitui o tamanho do carregamento do lote que é calculado dinamicamente para cada carga.

A partir do SQL Server 2012 PDW, o nó de controlo calcula por padrão, dinamicamente, um tamanho de lote para cada carga. Este cálculo automático baseia-se em vários parâmetros, como tamanho da memória, tipo de tabela de destino, esquema da tabela de destino, tipo de carga, tamanho do ficheiro e classe de recurso do utilizador.

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

Se o tipo de carga for FASTAPPEND, o tamanho do lote aplica-se ao carregar dados na tabela; caso contrário, o tamanho do lote aplica-se ao carregar dados na tabela de preparação.

<opções_de_rejeição>
Especifica opções para determinar o número de falhas de carga que o Loader irá permitir. Se as falhas de carga ultrapassarem o limiar, o carregador irá parar e não irá confirmar nenhuma linha.

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

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

Por exemplo, se o Loader tentar carregar 100 linhas e 25 falharem e 75 tiverem sucesso, então a taxa de falhas é de 25%.

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

O reject_value padrão é 0.

Quando usado com o valor -rt, o carregador interrompe o processo de carga quando a contagem de linhas rejeitadas ultrapassa o valor de rejeição.

Quando usado com -rt percentagem, o carregador calcula a percentagem em intervalos (opção -rs). Portanto, a percentagem de linhas com falhas pode exceder reject_value.

-rsreject_sample_size
Usado com a opção -rt percentage para especificar as verificações percentuais incrementais. Por exemplo, se reject_sample_size for 1000, o Loader calculará a percentagem de linhas falhadas depois de tentar carregar 1000 linhas. Recalcula a percentagem de linhas falhadas depois de tentar carregar cada uma das 1000 linhas adicionais.

-c
Remove os caracteres de espaços 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 branco na cadeia vazia.

Examples:

' ' é truncado para ''

'abc' é truncado para 'abc'

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

-E
Converter cadeias vazias em NULL. O padrão é não realizar estas conversões.

-m
Use o modo multitransação para a segunda fase de carregamento, ao carregar dados da tabela de preparação para uma tabela distribuída.

Com -m, o SQL Server PDW executa carregamentos e realiza commits em paralelo. Isto funciona 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 realiza carregamentos em série dentro de cada nó de Computação e simultaneamente entre os nós de Computação. Este método é mais lento do que o modo multi-transação, mas é seguro para transações.

-m é opcional para adição, recarga e upsert.

-m é obrigatório para o fastappend.

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

-m aplica-se apenas à segunda fase de carregamento. Não se aplica à primeira fase de carregamento; carregar dados na tabela de preparação.

Não existe rollback no modo de múltiplas transações, o que significa que a recuperação de uma carga falhada ou abortada deve ser gerida pelo seu próprio processo de carga.

Recomendamos usar -m apenas ao carregar numa tabela vazia, para que possa recuperar sem perda de dados. Para recuperar de uma falha de carga: abandone a tabela de destino, resolva o problema de carga, recrie a tabela de destino e execute novamente a carga.

-N
Verifique se o dispositivo de destino tem um certificado PDW válido do SQL Server de uma autoridade de confiança. Use isto para ajudar a garantir que os seus dados não estão a ser sequestrados por um atacante e enviados para um local não autorizado. O certificado deve já estar instalado no aparelho. A única forma suportada de instalar o certificado é o administrador do appliance instalá-lo usando a ferramenta Configuration Manager. Pergunte ao administrador do seu aparelho se não tiver a certeza se o aparelho tem um certificado de confiança instalado.

-se
Ignora o carregamento de ficheiros vazios. Isto também evita a descompressão dos ficheiros gzip vazios.

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

Valores do código de retorno

0 (sucesso) ou outro valor inteiro (falha)

Numa janela de comandos ou ficheiro batch, use errorlevel para mostrar 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.

Permissions

Requer permissão LOAD e permissões aplicáveis (INSERT, UPDATE, DELETE) na tabela de destino. Requer permissão CREATE (para criar uma tabela temporária) na base de dados de staging. Se não for utilizada uma base de dados de staging, então é necessária a permissão CREATE na base de dados de destino.

Observações gerais

Para informações sobre conversões de tipos de dados ao carregar com dwloader, consulte regras de conversão de tipos de dados para dwloader.

Se um parâmetro incluir um ou mais espaços, inclua o parâmetro com aspas duplas.

Deves executar o Loader a partir da sua localização instalada. O executável dwloader está pré-instalado com o aparelho e está localizado no diretório C:\Program Files\Microsoft SQL Server Data Warehouse\DWLoader.

Pode sobrescrever um parâmetro especificado no ficheiro de parâmetros (opção-f) especificando-o como um parâmetro de linha de comandos.

Podes executar várias instâncias do Loader em simultâneo. O número máximo de instâncias do Loader está pré-configurado e não pode ser alterado.

Dados carregados podem exigir mais ou menos espaço no aparelho do que na localização de origem. Pode realizar importações de teste com subconjuntos de dados para estimar o consumo de disco.

Embora dwloader seja um processo de transação e reverta suavemente em caso de falha, não pode ser revertido depois de concluída com sucesso a carga em massa. Para cancelar um processo dwloader ativo, escreva CTRL+C.

Limitações e Restrições

O tamanho total de todas as cargas que ocorrem em simultâneo deve ser inferior a LOG_SIZE para a base de dados, e recomendamos que o tamanho total de todas as cargas concorrentes seja inferior a 50% do LOG_SIZE. Para alcançar esta limitação de tamanho, pode dividir cargas grandes em vários lotes. Para mais informações sobre LOG_SIZE, consulte CRIAR BASE de DADOS

Ao carregar vários ficheiros com um único comando de carga, todas as linhas rejeitadas são escritas no mesmo ficheiro de rejeição. O ficheiro de rejeição não mostra qual ficheiro de entrada contém cada linha rejeitada.

A cadeia vazia não deve ser usada como delimitador. Quando uma cadeia vazia é usada como delimitador de linhas, a carga falha. Quando usado como delimitador de coluna, a carga ignora o delimitador e continua a usar o "|" padrão como delimitador de coluna. Quando usado como delimitador de cadeias, a cadeia vazia é ignorada e aplica-se o comportamento padrão.

Comportamento de bloqueio

O comportamento de bloqueio do dwloader varia consoante a opção_modo_carregamento.

  • append - Append é a opção recomendada e a mais comum. Adiciona os carregamentos de dados numa tabela de staging. A fechadura é descrita em detalhe abaixo.

  • fast append - O fast-append carrega diretamente na tabela final, tomando um bloqueio de tabela ExclusiveUpdate, sendo o único modo que não utiliza uma tabela de preparação.

  • reload - Reload carrega dados numa tabela intermediária e requer um bloqueio exclusivo tanto na tabela intermediária como na tabela final. A recarga não é recomendada para operações simultâneas.

  • upsert - Upsert carrega dados numa tabela de staging e depois realiza uma operação de fusão da tabela de staging para a tabela final. Upsert não exige fechaduras exclusivas na mesa final. O desempenho pode variar ao usar o upsert. Testa o comportamento no teu ambiente.

Comportamento de bloqueio

Bloqueio do modo Append

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

O modo de anexação carrega os dados em duas fases. A fase um carrega os dados do ficheiro de origem para uma tabela de staging em simultâneo (pode ocorrer fragmentação). A fase dois carrega os dados da tabela intermediária para a tabela final. A segunda fase realiza um INSERT INTO...SELECT WITH (TABLOCK). A tabela seguinte mostra o comportamento de bloqueio na tabela final e o comportamento de registo ao usar o modo de anexação:

Tipo de Tabela Multi-transação
Modo (-m)
A mesa está vazia Concorrência Apoiada Exploração Florestal
Área dinâmica para dados Yes Yes Yes Mínimo
Área dinâmica para dados Yes Não Yes Mínimo
Área dinâmica para dados Não Yes Não Mínimo
Área dinâmica para dados Não Não Não Mínimo
Cl Yes Yes Não Mínimo
Cl Yes Não Yes Completo
Cl Não Yes Não Mínimo
Cl Não Não Yes Completo

A tabela acima mostra o dwloader usando o modo de adição para carregar num heap ou numa tabela de índice clusterizado (CI), com ou sem o indicador multi-transacional, e carregando numa tabela vazia ou numa tabela não vazia. O comportamento de bloqueio e registo de cada combinação de carga é apresentado na tabela. Por exemplo, carregar a fase (2ª) com o modo de anexação num índice clusterizado sem modo multi-transacional e numa tabela vazia fará com que o PDW crie um bloqueio exclusivo na tabela e o registo seja mínimo. Isto significa que um cliente não poderá carregar a segunda fase e executar uma consulta simultaneamente numa tabela vazia. No entanto, ao carregar com a mesma configuração numa tabela não vazia, o PDW não emitirá um bloqueio exclusivo na tabela, permitindo a concorrência. Infelizmente, ocorre registo completo, o que atrasa o processo.

Examples

A. Exemplo simples do dwloader

O exemplo seguinte mostra a iniciação do Loader com apenas as opções necessárias selecionadas. Outras opções são retiradas do ficheiro de configuração global, loadparamfile.txt.

Exemplo usando a autenticação 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 de usar argumentos para um ficheiro fonte e um ficheiro 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 numa tabela AdventureWorks

O exemplo seguinte faz parte de um script batch que carrega dados no AdventureWorksPDW2012. Para visualizar o script completo, abra o ficheiro aw_create.bat que vem com o pacote de instalação AdventureWorksPDW2012 .

O seguinte excerto de script utiliza o dwloader para carregar dados nas tabelas DimAccount e DimCurrency. Este script usa um endereço Ethernet. Se estivesse a usar InfiniBand, o servidor estaria <appliance_name>-SQLCTL01.

set server=10.193.63.134  
set user=<MyUser>  
set password=<password>  
  
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%  

O seguinte é 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);  

Segue-se um exemplo do ficheiro 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 a partir da linha de comandos

O script no Exemplo B pode ser substituído introduzindo todos os parâmetros na linha de comandos, como mostrado no exemplo seguinte.

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 da linha de comandos:

  • C:\Program Files\Microsoft SQL Server Parallel Data Warehouse\100\dwloader.exe é a localização instalada de dwloader.exe.

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

  • -E especifica para carregar cadeias vazias como NULL.

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

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

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

  • -T AdventureWorksPDW2012.dbo.DimAccount especifica o nome em 3-partes da tabela que receberá os dados.

  • -R DimAccount.bad especifica que as linhas que falham ao carregar serão escritas num ficheiro chamado DimAccount.bad.

  • -t "|" indica que os campos no ficheiro de entrada, DimAccount.txt, estão separados pelo carácter do pipe.

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

  • -U <login_name> -P <palavra-passe> especifica o login e a palavra-passe do login que tem permissões para realizar o carregamento.