quarta-feira, 15 de junho de 2011

#18 - TRUNCATE - DB2

No ambiente DB2, quando o usuário solicita que você limpe o DB ou recrie o banco, surge uma dúvida usar um Delete ou Truncate para limpar o banco ou talvez recriar o banco executando um DROP e logo em seguida CREATE.

Analisando os possíveis cenários, hoje no ambiente em que trabalho os bancos são desenvolvidos com ferramentas de modelagem no qual podemos fazer todo o processo de geração de scripts ou engenharia reversa! Isso é um cenário perfeito, sei que não é todos os lugares que funcionam assim, então vamos a um outro cenário:

Já existe um DB que está em homologação e precisa apagar todos os dados e o sistema tem 'n' tabelas e não existe um modelo feito, a solução para limpar o DB é realizar um Truncate mas para isso é necessário descobrir quais são as tabelas do banco.

select tabschema , tabname from from syscat.tables where tabschema = 'XXX'

Após você descobrir quais são as tabelas do banco, basta montar um script para gerar a limpeza da tabela.

select ' TRUNCATE TABLE ' || rtrim(tabschema) || '.' || tabname || ' IMMEDIATE ;' from syscat.tables where tabschema = 'XXX'

Com a query acima você consegue o resultado para limpar todas as tabelas do seu banco por um determinado schema.

Executar um Truncate é mais rápido e performático do que o DELETE.

Nenhum comentário:

Postar um comentário