Eu tenho uma consulta que atinge várias tabelas em um banco de dados Oracle (11g). Não tenho acesso ao próprio servidor. Eu uso o SQL Developer ou SQL*Plus para conectar.
Existem cerca de 31 milhões de linhas e 7 colunas, e quero despejá-las em um arquivo CSV.
Como posso conseguir isso?
Assumir isso é transportar dados para um outro sistema. Nesse caso, isso funcionará:
Se você não quiser uma linha de cabeçalho, mude para rumo
Se for para analisar os dados no excel, por favor acorde e aprenda sql. O SQL, especialmente o Oracle, tem muitas ferramentas excelentes para ajudar a analisar seus dados. No momento em que os dados são transportados para o arquivo csv, o Oracle Analytics já fez ótimas análises. Data Warehousing e Business Intelligence, mas para muitas tarefas o SQL simples pode ser bom o suficiente. Comece a ler sobre o Oracle Analytics.
Eu olharia para escrever uma consulta para produzir os valores separados por vírgulas, tomando cuidado para inserir qualquer retorno de carro estranho ou outros engraçados que quebrariam o formato, especialmente se você tiver colunas que são entrada de texto de forma livre e podem ter todos os tipos de entradas neles. Certa vez, vi dados para "email_content" que tinham um exemplo de valores separados por vírgula colados nele. Foi divertido.
Seu código terminaria ao longo das linhas de ....
Em seguida, use o SQL*Plus para fazer o spool da saída, usando os comandos mostrados nos documentos para suprimir os cabeçalhos, definir um tamanho de linha adequado, suprimir o feedback do número de linhas, aumentar o tamanho do array padrão para cerca de 100, talvez, ou usar UTL_File para fazer o spool como um processo de servidor.