# Carregando registros novos e atualizados com carregamento incremental

Se seu aplicativo contiver uma grande quantidade de dados de fontes de banco de dados que são continuamente atualizados, o recarregamento de todo o conjunto de dados poderá ser demorado. Nesse caso, você deseja carregar registros novos ou alterados do banco de dados. Todos os outros dados já devem estar disponíveis no aplicativo. O carregamento incremental com arquivos QVD possibilita isso.

O processo básico está descrito abaixo:

1. Carregue dados novos ou atualizados da tabela da fonte do banco de dados.

   Esse é um processo lento, mas apenas alguns arquivos são carregados.

2. Carregar dados que já estão disponíveis no aplicativo do arquivo QVD.

   Muitos registros são carregados, mas esse processo é muito mais rápido.

3. Criar um novo arquivo QVD.

   Este é o arquivo que você usará na próxima vez em que fizer um carregamento incremental.

4. Repetir o procedimento para cada tabela carregada.

Veja a seguir exemplos de casos em que o carregamento incremental é utilizado. No entanto, uma solução mais complexa pode ser necessária, dependendo da estrutura do banco de dados de origem e do modo de operação.

* Anexar apenas (tipicamente usada para arquivos de log)
* Inserir apenas (sem atualizar nem excluir)
* Inserir e atualizar (sem excluir)
* Inserir, atualizar e excluir

Você pode ler arquivos QVD nos modos otimizado ou padrão. (O método usado é automaticamente selecionado pelo mecanismo Qlik Sense, dependendo da complexidade da operação.) O modo otimizado é cerca de 10 vezes mais rápido do que o modo padrão ou 100 vezes mais rápido do que carregar a base de dados do modo comum.

Para obter mais informações, consulte [Trabalhando com arquivos QVD](https://help.qlik.com/pt-BR/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/work-with-QVD-files.htm).

## Anexar apenas

O caso mais simples é aquele dos arquivos de log; arquivos nos quais os registros só são acrescentados e jamais excluídos. As seguintes condições se aplicam:

* O banco de dados deve ser um arquivo de log (ou algum outro arquivo no qual os registros são acrescentados e não inseridos ou excluídos) contido em um arquivo de texto (ODBC, OLE DB ou outros bancos de dados não são suportados).

* Qlik Sense controla o número de registros lidos anteriormente e carrega apenas registros incluídos no final do arquivo.

`Buffer (Incremental) Load 
 * From LogFile.txt (ansi, txt, delimiter is '\t', embedded labels);`

## Inserir apenas (sem atualizar nem excluir)

Se os dados residirem em um banco de dados que não seja um arquivo de log individual, a solução anexada não funcionará. No entanto, o problema poderá ser solucionado com um mínimo de trabalho adicional. As seguintes condições se aplicam:

* A fonte de dados pode ser qualquer base de dados.

* O Qlik Sense carrega os registros inseridos na base de dados após a execução do último script.

* Um ModificationTime campo (ou semelhante) é necessário para que Qlik Sense reconheça quais registros são novos.

`QV_Table:` `SQL SELECT PrimaryKey, 
		X, Y FROM DB_TABLE` `WHERE ModificationTime 
		>= #$(LastExecTime)#` `AND ModificationTime < 
		#$(BeginningThisExecTime)#;` `Concatenate LOAD PrimaryKey, 
		X, Y FROM File.QVD;` `STORE QV_Table INTO File.QVD;`

Os sinais de sustenido na cláusula SQL WHERE definem o início e o final de uma data. Verifique o manual do banco de dados para obter a sintaxe de data correta do banco de dados.

## Inserir e atualizar (sem excluir)

O caso seguinte se aplica quando os dados nos registros carregados anteriormente são alterados entre as execuções de script. As seguintes condições se aplicam:

* A fonte de dados pode ser qualquer base de dados.

* O Qlik Sense carrega os registros inseridos ou atualizados na base de dados após a execução do último script.

* É necessário um campo de ModificationTime (ou semelhante) para que o Qlik Sense reconheça quais registros são novos.

* É necessário um campo chave primário para que o Qlik Sense classifique os registros atualizados do arquivo QVD.

* Esta solução forçará a leitura do arquivo QVD no modo padrão (em vez do otimizado), que ainda será consideravelmente mais rápido do que carregar a base de dados inteira.

`QV_Table:` `SQL SELECT PrimaryKey, 
		X, Y FROM DB_TABLE` `WHERE ModificationTime 
		>= #$(LastExecTime)#;` `Concatenate LOAD PrimaryKey, 
		X, Y FROM File.QVD` `WHERE NOT Exists(PrimaryKey);` `STORE QV_Table INTO File.QVD;`

## Inserir, atualizar e excluir

O caso mais difícil de solucionar é quando os registros são excluídos da base de dados de origem entre as execuções de script. As seguintes condições se aplicam:

* A fonte de dados pode ser qualquer base de dados.

* O Qlik Sense carrega os registros inseridos ou atualizados na base de dados após a execução do último script.

* O Qlik Sense remove os registros excluídos da base de dados após a execução do último script.

* É necessário um campo de ModificationTime (ou semelhante) para que o Qlik Sensereconheça os registros novos.

* É necessário um campo chave primário para que o Qlik Sense classifique os registros atualizados do arquivo QVD.

* Esta solução forçará a leitura do arquivo QVD no modo padrão (em vez do otimizado), que ainda será consideravelmente mais rápido do que carregar a base de dados inteira.

` Let ThisExecTime = Now( 
		);  ` `QV_Table:` `SQL SELECT PrimaryKey, 
		X, Y FROM DB_TABLE` `WHERE ModificationTime 
		>= #$(LastExecTime)#` `AND ModificationTime < 
		#$(ThisExecTime)#;` `Concatenate LOAD PrimaryKey, 
		X, Y FROM File.QVD` `WHERE NOT EXISTS(PrimaryKey);` `Inner Join SQL SELECT 
		PrimaryKey FROM DB_TABLE;` ` If ScriptErrorCount = 
		0 then  ` `STORE QV_Table INTO File.QVD;` `Let LastExecTime = ThisExecTime; 
		` `End If`

APRENDIZADO RELACIONADO:

* [Como posso processar registros atuais usando carga incremental?](https://help.qlik.com/lnk/How_process_current_records_incremental_load)

## Saiba mais

* [Como posso processar registros atuais usando carga incremental?](https://help.qlik.com/lnk/How_process_current_records_incremental_load)