Como exportar o resultado da consulta para csv no Oracle SQL Developer?

240

Estou usando o Oracle SQL Developer 3.0. Tentando descobrir como exportar um resultado da consulta para um arquivo de texto (de preferência CSV). Clicar com o botão direito do mouse na janela de resultados da consulta não fornece opções de exportação.

Ken Liu
fonte

Respostas:

375

Versão que estou usando

texto alternativo

Atualização 5 de maio de 2012

Jeff Smith tem um blog exibição, o que eu acredito é o método superior para obter uma saída CSV do SQL Developer. O método de Jeff é mostrado como o Método 1 abaixo:

Método 1

Adicione o comentário /*csv*/à sua consulta SQL e execute-a como um script (usando F5 ou o 2º botão de execução na barra de ferramentas da planilha)

insira a descrição da imagem aqui

É isso aí.

Método 2

Executar uma consulta

texto alternativo

Clique com o botão direito e selecione descarregar.

Atualizar. No Sql Developer Versão 3.0.04, o descarregamento foi alterado para exportar Obrigado a Janis Peisenieks por apontar isso

texto alternativo

Captura de tela revisada para o SQL Developer Versão 3.0.04

insira a descrição da imagem aqui

No formato suspenso, selecione CSV

texto alternativo

E siga o restante das instruções na tela.

Ian Carpenter
fonte
25
+1. O termo "Descarregar" parece anti-intuitivo para mim. Carregar alguns dados significa inseri-los no banco de dados; portanto, "descarregamento" deve significar os dados são eliminados ...
Jeffrey Kemp
8
Na versão 3.0.04, esta opção foi renomeada para Exportar.
Janis Peisenieks
2
Ótimo. ps maiúsculas /*CSV*/não funcionou para mim, mas minúsculas /*csv*/sim. obrigado!
Eran Medan
3
Observe também que o método 2 pode ser executado em um bug (ainda presente na minha versão 3.0.04), onde apenas trava com uma contagem de linhas grande (3K linhas ou mais). Estou usando o SQLPLUS da velha escola, porque não vi o método 1 acima primeiro, mas alguns podem ser assim: {code} SET UNDERLINE OFF SET COLSEP ',' SET LINES 20000 PAGES 20000 SET FEEDBACK desativado - opcional SET HEADING off Spool C: \ Export \ EMP.csv --Agora a consulta SELECT * FROM EMP; Spool OFF
Jim P
1
@topr Use o método 1, selecione tudo, copie e cole em um editor de texto e salve como csv. Você pode até colar diretamente no Excel, mas não tenho certeza disso.
Travis
45

Não é exatamente "exportado", mas você pode selecionar as linhas (ou Ctrl- Apara selecionar todas elas) na grade que deseja exportar e depois copiar com Ctrl- C.

O padrão é delimitado por tabulação. Você pode colá-lo no Excel ou em outro editor e manipular os delimitadores conforme desejar.

Além disso, se você usar Ctrl - Shift- em Cvez de Ctrl- C, também copiará os cabeçalhos das colunas.

BQ.
fonte
5
impressionante, eu estava procurando especificamente sobre como copiar cabeçalhos. obrigado!
Mishkin
3
O único problema, se você tiver muitas linhas, significa que precisará consultar o conjunto de dados inteiro novamente. e se for uma consulta demorada, isso significa que você espera muito pela primeira página e depois por todas as páginas depois de pressionar ctrl + A. em outras palavras, ótima solução, mas funciona apenas a maior parte do tempo e para consultas relativamente mais rápidas ou menores.
Eran Medan
Na contagem de filas longas, ele removerá o material copiado! Não use isso.
Hash
@ Mark Nunca vi isso acontecer sozinho. Manteve apenas as primeiras 50 linhas ou algo assim? Nesse caso, há uma preferência separada para isso. Ele copia apenas o que está atualmente na grade, mas se você rolar para a parte inferior da grade, o SQL Dev buscará automaticamente mais linhas, para que eu possa ver como alguém pode interpretar isso como um bug.
BQ.
1
Tentei fazer isso em 43 mil linhas de dados e ele é executado para sempre - opção de exportação muito mais rápida. Isso é incrível se você tiver apenas algumas linhas de dados.
izikandrw
28

Para sua informação, você pode substituir /*csv*/ outros formatos, incluindo /*xml*/e /*html*/. select /*xml*/ * from empretornaria um documento xml com os resultados da consulta, por exemplo. Me deparei com este artigo enquanto procurava uma maneira fácil de retornar xml de uma consulta.

Yves Rochon
fonte
4
/ * inserir * / é particularmente útil.
jeremyjjbrown
Para onde vão os arquivos?
Anomaly
Ah, não importa, passei por cima da parte "executar como script", sem perceber que isso era diferente do botão de execução usual.
Anomaly
4

Para quem está com problemas, há um erro na exportação de timestamp CSV que passei algumas horas trabalhando. Alguns campos que eu precisava exportar eram do tipo timestamp. Parece que a opção de exportação CSV, mesmo na versão atual (3.0.04 a partir desta postagem), falha ao colocar os símbolos de agrupamento em torno dos carimbos de data e hora. Muito frustrante, pois os espaços nos registros de data e hora quebraram minha importância. A melhor solução que encontrei foi escrever minha consulta com um TO_CHAR () em todos os meus registros de data e hora, o que produz a saída correta, embora com um pouco mais de trabalho. Espero que isso poupe tempo a alguém ou coloque o Oracle em prática com seu próximo lançamento.

BoeroBoy
fonte
1
Minha versão 3.0.04 ainda possui um bug, onde apenas trava com exportações maiores (a minha é de 3K linhas). Minha correção simples foi usar o SQLPLUS:
Jim P
No meu caso, o Tipo de Dados Espaciais ( docs.oracle.com/cd/B19306_01/appdev.102/b14255/… ) estava sendo exportado dessa maneira (observe as vírgulas) MDSYS.SDO_GEOMETRY(2001,8307,MDSYS.SDO_POINT_TYPE(-122.39096,37.79251,NULL),NULL,NULL)sem estar entre aspas. E eu estou usando SQL dinâmico, então não posso TO_CHAR () essas colunas. Alguma sugestão?
The Red Pea
Mesmo usando o Dynamic SQL e apenas selecionando * ((e não quero modificá-lo para uma exceção em uma única coluna SQL de tipos de dados espaciais), talvez eu possa tentar duas coisas: 1) Use um COLSEP diferente como '|' ou 2) Antes da instrução SELECT, especifique como esta coluna deve ser formatada usando docs.oracle.com/cd/B19306_01/server.102/b14357/ch12013.htm
The Red Pea
2

Para fazer uma exportação para o sistema local do desenvolvedor do sql.

Path : C:\Source_Table_Extract\des_loan_due_dtls_src_boaf.csv

    SPOOL "Path where you want to save the file"
    SELECT /*csv*/ * FROM TABLE_NAME;
Arpan Saini
fonte
1

A exportação de CSV não escapa aos seus dados. Cuidado com as cordas que terminam em\ porque o resultado \"parecerá um escape "e não um \. Então você tem o número errado "e sua linha inteira está quebrada.

John
fonte
Provavelmente isso não é um bug - você pode decidir como as aspas serão escapadas, e o padrão é escapar com outro caractere de aspas, não uma barra invertida. Nesse caso, "foo\"é uma string entre aspas perfeitamente válida.
Ken Williams
É simples o suficiente substituir todas as ocorrências de \ por \\, se você souber sobre isso com antecedência. Obrigado!
jpaugh
Sim, bastante simples e provavelmente errado para a maioria das ferramentas de importação de CSV.
Wormbo