Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
valerioms
Creator
Creator

Script Incremental

Boa tarde!

Tenho um qvd que carrega arquivos de um diretório. O arquivo é acrescido dia após dia de informações. Preciso de um script que faça o carregamento apenas das informações do dia. Alguma ajuda? No aguardo, obrigado.

13 Replies
Clever_Anjos
Employee
Employee

No arquivo, tem algum pedaço de cada linha que identifica a data?

Clever_Anjos
Employee
Employee

Para fazer um incremental precisamos sempre de uma chave para identificar o que já foi lido e o que não foi

valerioms
Creator
Creator
Author

Bom dia Clever!

Não há nenhum pedaço que identifique uma data que possa ser usada. Vamos fazer o seguinte, preciso que leia apenas o arquivo do mês vigente. Lógico que na primeira carga vai ler todos do diretório mas posteriormente apenas o do mês vigente.

Clever_Anjos
Employee
Employee

Acredito que deva servir

SET PATHCSV=D:\tmp; // Onde estao os arquivos

SET QVDIncremental=D:\tmp\QvdIncremental.qvd; // QVD

LET MesCorrente=Date(Today(),'YYYYMM');

For each file in FileList('$(PATHCSV)\Bilhete*.csv') // Verifica todos os arquivos texto

  Let Arq = SubField(SubField(file,'\',-1),'.',1);

  If file like '*$(MesCorrente)*' then // Mes corrente é sempre lido

  Tab:load *,FileBaseName() as Arquivo FROM [$(file)](txt, utf8, embedded labels, delimiter is ',', msq);

  If not isnull(QvdNoOfRecords('$(QVDIncremental)')) then // Existe o QVD?

  concatenate(Tab) load * from [$(QVDIncremental)](qvd) where Arquivo <> '$(Arq)';

  Endif

  Store Tab into [$(QVDIncremental)](qvd);

  else  // Meses anteriores somente são lidos se não existirem

  If isnull(QvdNoOfRecords('$(QVDIncremental)')) then // Não existe o QVD, então lê o arquivo

  Tab:LOAD *,FileBaseName() as Arquivo FROM [$(file)](txt, utf8, embedded labels, delimiter is ',', msq);

  else // Verificar se o mes processado esta no qvd

  c: noconcatenate first 1 load * from [$(QVDIncremental)](qvd) where Arquivo = '$(Arq)';

  If NoOfRows('c') = 0  Then // Não estava então precisa ler

  Tab:noconcatenate load *,FileBaseName() as Arquivo FROM [$(file)](txt, utf8, embedded labels, delimiter is ',', msq);

  concatenate(Tab) load * from [$(QVDIncremental)](qvd) where Arquivo <> FileBaseName('$(file)');

  end if

  drop table c;

  end if

  end if

  If TableNumber('Tab') >= 0 then

  If NoOfRows('Tab') > 0 then

  Store Tab into [$(QVDIncremental)](qvd);

  Drop Table Tab;

  end if

  End if

Next