Amigos, boa tarde !
Consegui evoluir em um processo , só que agora preciso ajuda dos amigos especialistas.
Vamos lá.
Rotina:
Ler “N” arquivos textos de um diretório e inserir em uma tabela.
Estrutura do arquivo texto:
Um arquivo de LOG criado através do parâmetro “>” do arquivo Batch. Esse arquivo Batch executa diversos pacotes SSIS criando um log para cada pacote executado.
O que eu fiz até agora.
1- Criei uma variável para receber o nome dos cada arquivo @Arquivo
2- Adicionei o componente Foreach Loop Container.
3- Dentro do componente Foreach Loop Container adicionei um Data Flow Task
4- Na aba Data Flow criei a conexão Flat File Source informando o primeiro arquivo a ser lido.
5- Na propriedade Connection String deixei Expression = @Arquivo
6- Criei o OLE DB Destination
7- Estrutura da Tabela
NAME: TB_ROTINA_SSIS
DS_ROTINA
NM_PACOTE
CD_STATUS_EXECUCAO
DT_INSERT
O formato Flat File Source é Ragged Right , assim, a conexão so me trouxe uma coluna chamada COLUNA 0 a qual foi mapeada com o campo DS_ROTINA da tabela TB_ROTINA_SSIS. Os outros campos não obtiveram mapeamento.
Bom se eu executar do jeito que está. Finaliza ok. Mas, aqui está o meu problema. Não consegui associar o nome da variável @Arquivo ao atributo NM_PACOTE.
- Fusei nas propriedades do Flat File Source para ver se tinha a opção Expression , mas nada.
- Criei uma coluna no na conexão Flat File Source e não achei nenhuma propriedade para associar a variável.
Não sei se deu para entender.
Pois tenho 120 arquivos de LOGS, se eu deixar a rotina do jeito que está, ficará uma salada que só.
Duvida 1:
Como posso associar uma variável a uma coluna criada na conexão Flat File Source
Dúvida 2:
Cada arquivo possui essas linhas:
DTExec: The package validation returned DTSER_SUCCESS (0).
Started: 18:24:27
Finished: 18:24:29
Antes de dar LOAD na tabela final eu consigo ler somente o status do DTSER_SUCCESS (0). 0 ou 1 , Started: 18:24:27 e Finished: 18:24:29 ?
A estrutura ideal para minha tabela seria essa:
- Estrutura da Tabela
NAME: TB_ROTINA_SSIS
DS_ROTINA
NM_PACOTE
CD_STATUS_EXECUCAO
HR_INICIO_PACOTE
HR_FINAL_PACOTE
DT_INSERT
MUNDO IDEAL:
DS_ROTINA = todo processo do pacote SSIS executado via Batch desfiado para um o arquivo txt sendo lido pela rotina.
NM_PACOTE = DIM_TERRITORIO.DTSX
CD_STATUS_EXECUCAO = 0
HR_INICIO_PACOTE =18:24:27
HR_FINAL_PACOTE =18:24:29
DT_INSERT 16/12/2008
Preciso fazer uma auditoria dos pacotes processados e salvar em uma tabela. Alguém tem outra solução mais viável ????
Obrigado.
JoieVivre