# 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.

* 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 empregado é selecionado automaticamente pelo mecanismo do 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 cerca de 100 vezes mais rápido do que o carregamento do banco de dados de maneira normal.

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



## 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.

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

Exemplo:

`QV_Table:``SQL SELECT PrimaryKey, 
		X, Y FROM DB_TABLE``WHERE ModificationTime 
		>= #$(LastExecTime)#``AND ModificationTime < 
		#$(BeginningThisExecTime)#;`` ``Concatenate LOAD PrimaryKey, X, Y FROM [lib://DataFiles/File.QVD];
		``STORE QV_Table INTO [lib://DataFiles/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 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.

Exemplo:

`QV_Table:``SQL SELECT PrimaryKey, 
		X, Y FROM DB_TABLE``WHERE ModificationTime 
		>= #$(LastExecTime)#;`` ``Concatenate LOAD PrimaryKey, 
		X, Y FROM [lib://DataFiles/File.QVD]``WHERE NOT Exists(PrimaryKey);`` ``STORE QV_Table INTO [lib://DataFiles/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.

Exemplo:

` 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 [lib://DataFiles/File.QVD]``WHERE NOT EXISTS(PrimaryKey);`` ``Inner Join SQL SELECT 
		PrimaryKey FROM DB_TABLE;`` `` If ScriptErrorCount = 
		0 then  ``STORE QV_Table INTO [lib://DataFiles/File.QVD];``Let LastExecTime = ThisExecTime; 
		``End If`

Conteúdo de aprendizagem 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)