Usando pacotes SSIS para adicionar cabeçalhos de linha e dados em arquivos simples

Usando pacotes SSIS para adicionar cabeçalhos de linha e dados em arquivos simples

Usando pacotes SSIS para adicionar cabeçalhos de linha e dados em arquivos simples 1


Neste artigo, configuraremos um pacote SSIS para gerar uma saída composta no destino do arquivo simples.

Visão geral do problema

Recentemente, recebi um requisito para obter uma saída de uma consulta em um arquivo de texto. É simples obter uma saída no arquivo simples usando as opções do SSMS.

  • Resultados em texto

  • Resultado para arquivo

Mas minha exigência era um pouco diferente. Deixe-me explicar o formato de saída primeiro. Neste artigo, usarei o [AdventureWorksDW2017] banco de dados de amostra. Você pode baixar a cópia de backup dos documentos da Microsoft e restaurá-la na instância SQL.

Consulta para obter dados de amostra

Na saída da consulta acima, a primeira coluna mostra o [ModelRegion]. Nossa exigência é obter a saída no seguinte formato. Deve mostrar [ModelRegion] como um cabeçalho seguido por dados nas linhas correspondentes nas próximas linhas.

Saída final

Se você tiver pequenas linhas na tabela SQL, poderá obter todas as linhas em um arquivo de texto e formatar manualmente os dados. Mas não quero preparar dados manualmente. O pacote SSIS sempre vem para resgate nessas situações. Vamos ver como o SSIS pode satisfazer o requisito.

Você pode examinar esses artigos aqui, SSIS (Integration Services) para obter conhecimento básico dos pacotes SSIS antes de continuar com este artigo.

Crie um pacote SSIS para obter saída em um arquivo simples com cabeçalho de coluna

Você deve ter um visual studio 2019 com ferramentas de dados do SQL Server e extensão do serviço de integração. Você pode consultar este artigo, Instalar o SSDT com o Visual Studio 2019 para obter mais detalhes.

Crie um novo projeto SSIS usando a opção de projeto do Serviço de Integração mostrada abaixo.

Crie um novo projeto de serviço de integração

Especifique o nome e o local do projeto conforme sua exigência.

Especifique o nome do projeto

Definir variáveis

Neste projeto, definimos variáveis ​​de usuário. Uma variável SSIS é um objeto que armazena os valores e você pode fazer referência a essas variáveis ​​no pacote. O SSIS também fornece algumas variáveis ​​de sistema e você pode usá-las, especialmente para fins de auditoria e depuração.

Vamos criar as seguintes variáveis ​​de usuário para nossa configuração de pacote SSIS.

Para definir uma variável no pacote SSIS, clique com o botão direito do mouse na área em branco do fluxo de Controle e selecione Variáveis.

defina uma variável

Na janela de variáveis, clique em Adicionar variáveis(conforme indicado pela seta) e adicione as variáveis ​​definidas acima. Você pode escolher tipos de dados apropriados para uma variável do usuário.

Adicionar variáveis

Adicionar uma tarefa de execução SQL

Agora, arraste uma tarefa de execução SQL no fluxo de controle e abra suas propriedades. No editor de execução SQL, faça as seguintes configurações.

  1. Nome: Especifique um nome adequado para a tarefa
  2. Conjunto de resultados: Selecione os Conjunto de resultados completo do menu suspenso. Nesse caso, o conjunto de resultados pode conter vários valores
  3. Detalhes de conexão:
    1. Tipo de conexão: OLE DB
    2. Conexão: Crie uma nova conexão SQL ou escolha uma conexão de instância SQL existente, método de autenticação (Windows ou SQL) e banco de dados padrão para a conexão SQL OLE DB
    3. Tipo de origem SQL: Entrada direta. Usamos a consulta SQL no método de entrada direta
    4. Instrução SQL: Aqui, especifique a consulta SQL para obter distintas [ModelRegion] valores

Adicionar uma tarefa de execução SQL

Clique no conjunto de resultados no menu à esquerda e mapeie a variável Usuário :: ModelRegion. Aqui, você sempre usa o valor 0 para o conjunto completo de resultados.

Conjunto de resultados e variável

Conclui a configuração para executar a tarefa SQL.

Tarefa SQL

Adicionar um contêiner de loop Foreach

Agora, arraste o contêiner de loop Foreach e junte-o a executar a tarefa SQL criada anteriormente. Ele executa as tarefas especificadas dentro do loop para cada valor recebido da execução da tarefa SQL.

Você pode consultar este artigo, Usando contêineres SSIS ForEach Loop para processar arquivos em ordem de data para aprender sobre esse contêiner.

Adicionar um contêiner de loop foreach no pacote SSIS

Clique duas vezes neste contêiner de loop Foreach para configurá-lo. Na página de coleção, faça as seguintes alterações.

  • Enumerador: Selecione o Foreach ADO Enumerator para percorrer a lista de valores distintos de [ModelRegion]
  • Variável de origem do objeto ADO: Selecione a variável Usuário :: ModelRegion do menu suspenso

Contêiner de loop Foreach

Clique no Mapeamentos variáveis e mapeie a variável Usuário :: QueryDetails dos valores suspensos. Ele pega automaticamente o valor 0 para a coluna do índice.

Mapeamentos variáveis

Adicionar tarefas de fluxo de dados no contêiner de loop Foreach

Agora, arraste uma tarefa de fluxo de dados para dentro de cada contêiner de loop. Você pode renomear esta tarefa de fluxo de dados, mas vamos com um nome padrão.

Adicionar tarefas de fluxo de dados

Abra o editor de tarefas de fluxo de dados e inclua os seguintes componentes.

Nesta fonte, especifique a conexão da instância SQL e cole a seguinte consulta SQL e filtre os registros com parâmetros

Fonte OLE DB

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Clique nos parâmetros e mapeie a variável SSIS, como mostrado abaixo.

  • Parâmetros: Parâmetro 0
  • Variáveis: Usuário :: QueryDetails
  • Direção do parâmetro: entrada

Parâmetros

Clique em OK e adicione um destino de arquivo simples. Aqui, a cruz vermelha mostra que a configuração não está completa para a tarefa.

Adicionar um destino de arquivo simples

No editor de destino do arquivo simples, especifique um nome e um local para o arquivo de texto. Podemos deixar as outras configurações, como qualificador de texto, delimitador de linha de cabeçalho como padrão.

editor de destino de arquivo simples

Clique em Mapeamento e verifique o Mapeamento entre a saída da consulta SQL e a coluna de arquivo simples. Nesta demonstração, temos colunas de entrada e saída como [ModelRegion].

verificar mapeamento

Agora, volte para a área de controle de fluxo e adicione outra tarefa de fluxo de dados. Esta tarefa de fluxo de dados adicionará os detalhes de um determinado [ModelRegion] no arquivo simples.

configuração da tarefa de fluxo de dados

Abra o editor de tarefas de fluxo de dados e adicione a mesma origem OLE DB e destino de arquivo simples.

No editor OLE DB, especifique a consulta SQL que retorna valores para linhas de dados correspondentes a um [ModelRegion].

Para esta demonstração, adicionei as 2 principais cláusulas para mostrar a saída com as duas primeiras linhas, de acordo com o valor em ordem decrescente.

Comando Especificar SQL

Clique nos Parâmetros e faça o mapeamento das variáveis, como mostrado abaixo.

  • Parâmetros: Parâmetro 0
  • Variáveis: Usuário :: QueryDetails
  • Direção do parâmetro: entrada

Mapeamentos de parâmetros

Adicione o destino do arquivo simples, como mostrado abaixo.

Adicione o destino do arquivo simples

No editor do gerenciador de conexão de arquivos simples, inclua um novo arquivo simples, mas deve apontar para o mesmo arquivo de texto que usamos anteriormente para a saída. A segunda tarefa de fluxo de dados deve gravar no mesmo arquivo simples conforme nosso requisito.

editor de gerenciador de conexão de arquivo simples

Nos mapeamentos, verifique as colunas da consulta SQL e da saída de arquivo simples.

Verificar mapeamentos de saída de entrada

Clique em OK e vemos a seguinte configuração de pacote SSIS.

configuração de pacote

Você também deve desmarcar a opção – Sobrescrever dados no arquivo dos dois arquivos simples, como mostrado abaixo. Se ativarmos esta opção, ela substituirá os dados no arquivo simples em cada loop.

Sobrescrever dados no arquivo

Compreendendo a lógica do pacote SSIS usada neste artigo

Clique em Ok e vemos o seguinte pacote SSIS. Antes de executar este pacote, deixe-me explicar a lógica completa que implementamos neste artigo.

  1. Primeiro, ele executa a tarefa de execução SQL (neste caso, Get Distinct [ModelRegion]) e obtém valores exclusivos para o [ModelRegion] na variável completa do conjunto de resultados

  2. Em seguida, ele executa um contêiner de loop Foreach para cada valor exclusivo

    1. Para o primeiro valor exclusivo, ele executa a primeira tarefa de fluxo de dados. Nesta tarefa de fluxo de dados, imprimimos o [ModelRegion] valor no arquivo simples

    2. Em seguida, ele vai para a segunda tarefa de fluxo de dados e imprime os valores correspondentes a um [ModelRegion] para o qual o loop está sendo executado

  3. Ele continua a execução do pacote para os valores restantes e termina quando ele grava todos os valores no arquivo simples

Compreender a lógica

Execute o pacote SSIS usando o botão Iniciar na barra de menus. Ele executa o pacote com sucesso, como mostrado abaixo. Em caso de erro, obtemos um ícone de cruz vermelha na respectiva tarefa com falha.

Pacote de sucesso

Vá para o diretório de destino, que especificamos na conexão de arquivo simples, e visualize os registros. Satisfaz nossos requisitos iniciais.

Saída final

Conclusão

Neste artigo, exploramos como os pacotes SSIS ajudam a gerar saídas compostas conforme nossos requisitos. Isso nos ajuda a evitar tarefas manuais e automatizar as coisas sem escrever nenhum código complicado. É útil para administradores de banco de dados e desenvolvedores.

Rajendra Gupta
Últimas mensagens de Rajendra Gupta (ver todos)

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br
Leia Também  Auditar e alertar alterações de status de trabalhos do SQL Server (ativado ou desativado)