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?

Foi útil?

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

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