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


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.


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.


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.


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.


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;

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.