Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
No arquivo, tem algum pedaço de cada linha que identifica a data?
Para fazer um incremental precisamos sempre de uma chave para identificar o que já foi lido e o que não foi
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.
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