Edvaldo Albino
Feb 27, 2018

Pentaho Data Integration

1 comment

Bom dia, Configurei o PDI para acessar um servidor FTP e baixar um arquivo em csv, até aí tudo bem, o problema é que dentro da pasta no servidor FTP haverá sempre mais de arquivo, exemplo: REC_PEND_FECH_COM20180219130059.csv ,REC_PEND_FECH_COM20180219132200.csv , REC_PEND_FECH_COM20180219134000.csv . . . Ou seja preciso copiar sempre o arquivo mais atual, como fazer isso ? Aqui usei o shell script no pentaho para fazer o FTP e copiar os arquivos (Mget na pasta), mas não sei como especificar para capturar sempre o arquivo mais recente dentro do diretório, o nome do arquivo é dinâmico ( REC_PEND_FECH_COMaaaammddhhmmss.csv )

vraoliveira
Feb 28, 2018

Olá Edivaldo,

 

Vou tentar ajudar com algumas opções:

 

1 - Crie uma estrutura de pasta, e mova os arquivos sempre que realizar a execução exemplo: (Entrada, Backup) de modo que na entrada sempre fique o ultimo arquivo

 

2 - Configurar o VFS da apache para passar parâmetros como ultima modificação de arquivo

https://help.pentaho.com/Documentation/7.1/0L0/0Y0/030/050/010/000/000

https://commons.apache.org/proper/commons-vfs/

 

3 - Crie uma tabela de controle no banco e faça um step para inserir nessa tabela com o nome do arquivo e o substring para pegar a data que já está no final do arquivo, no mapeamento de sua carga faça um select nessa tabela ordenando por essa data e pegando o primeiro registro. (Essa solução é legal por que você pode pegar o arquivo de qualquer data através desse gerenciamento de tabela)

 

4- Outra opção, caso você faça uma carga diária por exemplo, e sempre vai pegar uma data exemplo d-1, então você pode ler todos arquivos do FTP comparando se a data de modificação é igual ao período informado (Tenho um exemplo, qualquer coisa pede no email vraoliveira@gmail.com pois aqui não consigo fazer upload de arquivo).

 

Até mais

© Copyright 2019 - Todos os direitos reservados.