Atualização e inserção de novos dados
É possível adicionar novos dados de forma eficiente a uma tabela existente usando o comando MERGE. Execute uma operação de mesclagem criando uma tabela intermediária e, depois, use um dos métodos descritos nesta seção para atualizar a tabela de destino pela tabela de preparação. Para obter mais informações sobre o comando MERGE, consulte MERGE.
O Exemplos de mesclagem usa um exemplo de conjunto de dados para o Amazon Redshift, chamado conjunto de dados TICKIT. Como pré-requisito, você pode configurar as tabelas e os dados do TICKIT seguindo as instruções disponíveis em Conceitos básicos das tarefas comuns do banco de dados. Informações mais detalhadas sobre o exemplo de conjunto de dados estão disponíveis em Exemplo de banco de dados.
Método de mesclagem 1: substituição de linhas existentes
Se você estiver sobrescrevendo todas as colunas na tabela de destino, o método mais rápido para realizar uma mesclagem será substituir as linhas existentes. Isso verifica a tabela de destino apenas uma vez, usando uma junção interna para excluir as linhas que serão atualizadas. Após a exclusão das linhas, elas são substituídas por novas linhas por uma única operação de inserção da tabela de preparação.
Use este método se todos os itens a seguir forem verdadeiros:
-
Sua tabela de destino e sua tabela de preparação contêm as mesmas colunas.
-
Você pretende substituir todos os dados nas colunas da tabela de destino por todas as colunas da tabela de preparação.
-
Você utilizará todas as linhas da tabela de preparação na mesclagem.
Se qualquer um desses critérios não se aplicar, use o “Método de mesclagem 2: especificação de uma lista de colunas sem usar MERGE”, descrito na seção a seguir.
Se você não vai usar todas as linhas da tabela de preparação, filtre as instruções DELETE e INSERT usando uma cláusula WHERE para ignorar linhas que não estejam sendo alteradas. No entanto, se a maioria das linhas da tabela de preparação não participará da mesclagem, recomendamos executar um UPDATE e um INSERT em etapas separadas, conforme descrito posteriormente nesta seção.
Método de mesclagem 2: especificação de uma lista de colunas sem usar MERGE
Use este método para atualizar colunas específicas na tabela de destino em vez de substituir linhas inteiras. Este método leva mais tempo que o método anterior, pois ele requer uma etapa de atualização adicional e não usa o comando MERGE. Use este método se qualquer um dos itens a seguir for verdadeiro:
-
Não todas as colunas da tabela de destino devem ser atualizadas.
-
A maioria das linhas na tabela de preparação não serão usadas nas atualizações.