Pergunta
Estou executando o Oracle e tenho uma consulta que extrai alguns resultados do banco de dados.Eu gostaria de escrever os resultados como um arquivo de texto.Como eu faria isso?
Minha forma preferida seria usar UTL_FILE.Alguém teria um exemplo de como fazer isso?
Solução
Se você estiver usando PL/SQL, poderá usar o pacote UTL_FILE, a diferença de usar sql+ spool é que os arquivos são gravados no sistema de arquivos do servidor.UTL_FILE tem uma série de limitações, portanto uma alternativa no lado do servidor seria usar procedimentos armazenados Java.
Outras dicas
Se você estiver usando o Sql Plus, é tão fácil quanto:
SQL> spool c:\temp\out.txt SQL> SELECT * FROM USERS; SQL> spool off
Estas três frases produzirão o resultado da consulta "SELECT * FROM USERS" no arquivo c: emp\out.txt.
Você pode formatar esta consulta usando as funções de manipulação de string do Oracle.
Use UTL_FILE em combinação com CREATE DIRECTORY para facilitar o mapeamento de um caminho de diretório com um nome (ele não cria o diretório real, apenas uma referência a ele, portanto, certifique-se de que seja criado primeiro)
exemplo
create directory logfile as 'd:\logfile'; -- must have priv to do this
declare
vFile utl_file.file_type;
begin
vFile := utl_file.fopen(logfile ,'syslog','w'); -- w is write. This returns file handle
utl_file.put(vFile,'Start Logfile'); -- note use of file handle vFile
utl_file.fclose(vFile); -- note use of file handle vFile
end;
Se você estiver executando a consulta de sqlplus você pode usar o comando spool:
spool /tmp/test.spool
Depois de executar o comando spool em uma sessão, toda a saída é enviada para o console sqlplus, bem como para o arquivo de texto /tmp/test.spool.
Este parece ser um tutorial razoável com alguns exemplos simples Exemplo UTL_FILE