Pergunta

Portanto, geralmente tenho que carregar dados na manutenção de tabelas para executar algumas verificações de validação de dados e, em seguida, retornar os resultados. Normalmente, eu crio a tabela de retenção, depois um arquivo de controle SQLLDR e carrego os dados na tabela e executei minhas consultas. Existe alguma razão para eu estar usando tabelas externas para coisas? De que maneira eles facilitarão minha vida?

Foi útil?

Solução

A grande vantagem das tabelas externas é que podemos consultá -las de dentro do banco de dados usando o SQL. Portanto, podemos apenas executar as verificações de validação como instruções selecionadas sem a necessidade de uma tabela de retenção. Da mesma forma, se precisarmos fazer alguma manipulação dos dados carregados, quase sempre é mais fácil fazer isso com os comandos SQL em vez dos sqlldr. Também podemos gerenciar cargas de dados com as rotinas DBMS_JOB/DBMS_SCHEDULER, o que reduz ainda mais a necessidade de scripts de shell e trabalhos de cron.

No entanto, se você já possui um processo maduro e estável usando o SQLLDR, eu admiti que é improvável que você obtenha enormes benefícios da porta para tabelas externas.

Existem também alguns casos - especialmente se você estiver carregando milhões de linhas - onde a abordagem SQLLDR pode ser consideravelmente mais rápida. Por mais que a diferença não seja tão marcada com versões mais recentes do banco de dados. Espero que o SQLLDR seja finalmente preso em favor de tabelas externas.

Outras dicas

Se você olhar para a sintaxe da tabela externa, ele se parece com a sintaxe do arquivo de controle do carregador SQL*:-)

Se sua tabela externa for usada repetidamente em várias consultas, poderá ser mais rápido carregar uma tabela (como você está fazendo agora) em vez de rescindir sua tabela externa para cada consulta. Como @APC Notes, o Oracle está fazendo melhorias nelas; portanto, dependendo da versão do DB YMMV.

Eu usaria tabelas externas para sua flexibilidade.

É mais fácil modificar a fonte de dados neles para ser um arquivo diferente alter table ... location ('my_file.txt1','myfile.txt2')

Você pode fazer inserções multitáveis, mesclar, executá -lo através de uma função de pipeline etc ...

A consulta paralela é mais fácil ...

Também estabelece melhor dependências ...

O código é armazenado no banco de dados para que seja automaticamente backup ...

Outra coisa que você pode fazer com tabelas externas é a leitura de arquivos compactados. Se seus arquivos forem compactados, por exemplo, você poderá usar a diretiva pré -processadora na definição de tabela externa, para descomprimir os arquivos conforme eles são lidos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top