[Pentaho] - Criando uma Simples transformação para apagar tabelas de um esquema no Oracle

Vou mostrar abaixo uma tarefa bastante simples utilizando o Pentaho Data Integration, para fins de aprendizado de 2 componentes interessantes, o "table input" (que utilizo em praticamente todos os projetos) e o "Execute Sql Script" (usado eventualmente).

O que esta transformação vai fazer será excluir todas as tabelas de determinado esquema de usuário no banco de dados Oracle. Este mesmo script poderia ser utilizado também para exclusão de qualquer objeto, mas fica para um segundo post.

No primeiro componente "table input" configurei da seguinte forma:


  • Nome do Step: Tabelas a Excluir
  • Conexão: SPED (o nome da conexão que criei previamente);
  • SQL: Aqui fiz um select na tabela "user_tables" do dicionário do Oracle, que me retorna o nome de todas as tabelas (exceto temporárias).


No segundo compontente "Execute Sql Script" configurei assim:

  • Nome do Step: Apaga Tabelas
  • Conexão: A mesma informada no step anterior: SPED
  • SQL: Aqui coloquei o comando para apagar a tabela da base: drop table ?;
    • A interrogação se refere a um argumento que vou passar por parâmetro, informado no item "Parameters";
  • Execute for each row: Esta opção deve ser marcada para que o componente execute em um loop para cada campo retornado pelo select do componente anterior "table_input". Ou seja, vai disparar o comando "drop table" para cada ocorrência de "table_name".
  • Parameters: Aqui seleciono o campo retornado pelo componente anterior "table_name". O valor dele será substituído pela interrogação informada no bloco SQL. 
Feito isso basta agora executar a transformação. Após sua execução todas as tabelas físicas do esquema "SPED" terão sido excluídas. Possibilitando assim uma nova carga de dados.

Dúvidas ou sugestões comentem...

5 comentários

Postagens mais visitadas deste blog

[eXo] - Remover janela de solicitação de Registro

[Kettle] - Ajuste de problema com horário de verão

Pegando informações de Sessão no Oracle e equivalente no MSSQL