Respostas:
Uma corrida,
agora que o sqlcl está disponível no Oracle SQL Developer 4.1 EA2 (4.1.0.18.37), você pode usá-lo como o antigo e famoso sqlplus. O sqlcl possui uma configuração de formato de saída para csv
set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off
para obter mais informações sobre o sqlcl checkout Kris 'blog
antes que o sqlcl estivesse mais fácil, era usar o APEX e exportar o relatório para csv. No sqlplus antigo simples, você pode fazer isso usando
set lines 9999 -- the appropriate size
set head off -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off
Isso funciona melhor se os resultados forem gravados em um servidor ou cliente de aplicativo. Se eles precisarem ser gravados no servidor de banco de dados, utl_file pode ser uma opção melhor.
Ronald.
Você deve olhar para o pacote UTL_FILE embutido . Existem várias maneiras de usá-lo.
Você pode escrever qualquer número de procedimentos em pacotes que usam o pacote UTL_FILE para gravar em qualquer número de arquivos. Esses procedimentos podem ser chamados a partir de praticamente qualquer aplicativo, incluindo o SQL * Plus.
Você pode escrever um script PL / SQL para fazer o mesmo trabalho e chamar o script a partir da própria linha de comando do SQL * Plus, especificando @scriptname na linha de comando.
Você pode colar um bloco usando UTL_FILE diretamente no SQL * Plus, mas isso deve ser usado apenas para exportações únicas e, mesmo assim, pode não ser o melhor caminho.
No mais simples, uma exportação de arquivo usando UTL_FILE seria composta por uma chamada para FOPEN , uma ou mais chamadas para PUT_LINE e uma chamada para FCLOSE .
Se o desempenho for uma preocupação, convém considerar as ferramentas dos fornecedores.
Avaliei as ferramentas da BMC, Wisdomforce, CoSort, DBCrane. Todos eles são significativamente mais rápidos que spool, utl_file ou tabela externa. Estamos usando o DBCrane porque meu chefe não queria gastar muito com licença.
Você pode usar o módulo Python e cx_Oracle para extrair dados para o disco no formato CSV.
Veja como você se conecta ao Oracle usando cx_Oracle:
constr='scott/tiger@localhost:1521/ORCL12'
con = cx_Oracle.connect(constr)
cur = con.cursor()
Após a busca dos dados, você pode percorrer a lista Python e salvar dados no formato CSV.
for i, chunk in enumerate(chunks(cur)):
f_out.write('\n'.join([column_delimiter.join(row[0]) for row in chunk]))
f_out.write('\n')
Eu usei essa abordagem quando escrevi o TableHunter-For-Oracle