none
Direcionamento - SSIS para transformar Flat File de Log de execução RRS feed

  • Pergunta

  • Jovens,

    Queria apenas um 'norte' quanto a uma demanda aqui, para que eu transforme o arquivo de LOG (exemplo na imagem) em uma tabela. O que queria saber era se o SSIS realmente tem essa robustez para transformação desse arquivo, e qual recomendação (por onde começar) com essa tratativa

    Essa nova tabela consistiria apenas em capturar o código do equipamento | data/hora fim da tarefa agendada

    Não consegui visualizar uma solução para 'quebrar' esse arquivo. Alguma dica?

    terça-feira, 29 de maio de 2018 02:42

Respostas

  • Ótima ideia, Felipe.

    Falei com uma galera aqui e sugeriram eu utilizar Conditional Split no SSIS pra fazer essas quebras. 

    Mas como Plan B vou quebrar lá, pois naquele terreno (SQL) estou em casa, rs....

    Obrigadão pelo retorno

    quarta-feira, 30 de maio de 2018 14:42

Todas as Respostas

  • Jose Germano,

    Vamos por partes:

    1 - O SSIS é uma ferramenta fantástica, mas como todas apresenta diversas limitações, dentre elas suporte a versões do SQL Server, o mesmo a partir da versão 2012 foi substituído pelo SQL Server Data Tools.

    2 - No que diz respeito a robustez, sim ele é robusto na sua arquitetura e conjunto de ferramentas, mas isso também é analisada para cada situação, e neste caso o mesmo somente estará criando um ambiente "package" para processamento, o qual será feito a posterior pelo SQL Server ou por alguma outra ferramenta que venha a executar este pacote.

    Tenho uma dúvida, esta imagem que você anexo no post esta sendo gerada por qual ferramenta? Este é o histórico de processamento do seu package?

    O que exatamente você deseja guardar em relação a este suposto log?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 29 de maio de 2018 11:58
    Moderador
  • Olá mestre Junior Galvao (acompanho você de longa data),

    Essa imagem é de um arquivo de log criado por uma aplicação terceira (onde registra o envio/recebimento de informações de relógio de ponto).

    A minha idéia/problema: Como a aplicação não tem nenhuma tabela onde existe essa relação e controle de envio/recebimento, através desse arquivo, queria criar uma tabela onde teria 3 colunas apenas (inicialmente).

    Seria elas:

    Código equipamento  (8083, no exemplo do arquivo);

    Tipo operação (Envio - quando aparece Enviar Registros | Recebimento - quando aparece Enviar Lista de funcionários);

    Registro (data/hora do processamento - sempre pegar o registro da linha Fim da Tarefa);

    Isso solucionaria meu problema atual: Saber qual foi a data de ultimo envio/recebimento de cada equipamento.


    • Editado Jose Germano terça-feira, 29 de maio de 2018 12:23
    terça-feira, 29 de maio de 2018 12:23
  • José,

    Acredito que seja uma arquivo .txt!

    Sim você pode criar isso, e justamente através do SSIS mapeando estes arquivos .txt e enviando para uma tabela específica, inclusive no seu Dataflow você deverá mapear o arquivo .txt para cada coluna que vai compor a tabela.

    Você já tem o banco e a tabela criada?


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    terça-feira, 29 de maio de 2018 12:35
    Moderador
  • Exato, Junior. É um único arquivo txt com todas essas informações.

    Show de bola então, sabendo que é possível fazer isso no SSIS vou quebrar mais a cabeça aqui, sobre como realizar essa quebra.

    Só não tinha conseguido 'visualizar' como 'pegar' esse bloco de texto dentro da linha para identificar o que é o que (seria uma condição mais ou menos assim: Se na linha conter a expressão"Comunicação agendada para equipamento: [pegar esse código] e popular a coluna x") | e assim por diante.... Teria alguma dica de como fazer isso?

    O banco e a tabela ainda não, mas já vou criar aqui e deixar no jeito.

    terça-feira, 29 de maio de 2018 12:45
  • Jose,

    Você tem a opção de tratar isso durante a importação, ou simplesmente importar todo o arquivo em uma única coluna e fazer essa "quebra" dentro do SQL.

    terça-feira, 29 de maio de 2018 20:05
  • Olá mestre Junior Galvao (acompanho você de longa data),

    Essa imagem é de um arquivo de log criado por uma aplicação terceira (onde registra o envio/recebimento de informações de relógio de ponto).

    A minha idéia/problema: Como a aplicação não tem nenhuma tabela onde existe essa relação e controle de envio/recebimento, através desse arquivo, queria criar uma tabela onde teria 3 colunas apenas (inicialmente).

    Seria elas:

    Código equipamento  (8083, no exemplo do arquivo);

    Tipo operação (Envio - quando aparece Enviar Registros | Recebimento - quando aparece Enviar Lista de funcionários);

    Registro (data/hora do processamento - sempre pegar o registro da linha Fim da Tarefa);

    Isso solucionaria meu problema atual: Saber qual foi a data de ultimo envio/recebimento de cada equipamento.


    José, bom dia.

    Obrigado por me acompanhar, fico honrado e grato por seu reconhecimento.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 30 de maio de 2018 12:16
    Moderador
  • Jose Germano,

    Esqueci de agradecer o seu elogio, eu mestre que isso cara sou igual a todos e tenho muito a aprender.

    Uma outra sugestão, ao invés de utilizar o SSIS, se é um único arquivo, eu pensaria em implementar um script através do comando BCP ou Bulk Insert para realizar esta importação, ou até mesmo desenvolveria uma simples aplicação para tal finalidade.

    Pense nestas hipóteses.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 30 de maio de 2018 12:18
    Moderador
  • Ótima ideia, Felipe.

    Falei com uma galera aqui e sugeriram eu utilizar Conditional Split no SSIS pra fazer essas quebras. 

    Mas como Plan B vou quebrar lá, pois naquele terreno (SQL) estou em casa, rs....

    Obrigadão pelo retorno

    quarta-feira, 30 de maio de 2018 14:42
  • Show, Junior. 

    Vou utilizar Bulk Insert como Plan C (Plano B vou utilizar a sugestão do Felipe).

    Vou me aprofundar no Conditional Split + MultiCast pra tentar fazer algo, quebrar um pouco a cabeça ainda.

    Em casos negativos, vou seguir com esses cenários.

    Muito obrigado pelo retorno

    quarta-feira, 30 de maio de 2018 14:43