Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como gravar em um arquivo CSV usando Oracle SQL*Plus


[SQLPlus](https://docs.oracle.com/cd/B19306_01/server.102/b14357/qstart.htm) é uma ferramenta interativa que vem instalada em todas as instalações modernas do Oracle. SQL Além disso, permite que você vá além das consultas de banco de dados padrão com lotes, scripts e cálculos além do escopo normal do Oracle.

É até possível, como exploraremos a seguir – gerar arquivos de texto, como .csv , usando a saída de uma consulta de banco de dados específica.

Iniciando o SQL*Plus


Dependendo da sua instalação do Oracle, você pode ter acesso a uma das muitas versões ou “modos” diferentes para executar o aplicativo SQL*Plus.

Linha de comando SQL*Plus


Se você deseja usar a SQL*Plus Command-line , você simplesmente emitirá o sqlplus comando do seu shell:
$ sqlplus

Isso tentará conectar você ao padrão banco de dados e você será solicitado a inserir suas credenciais para se autenticar.

No caso de você precisar se conectar a um database diferente ou use um user diferente (schema ), tente o seguinte, substituindo seus próprios valores conforme necessário:
$ sqlplus schema@//machine.domain:port/database

iSQL*Plus


Se você tiver acesso a ele, talvez queira usar o iSQL*Plus , que é uma versão baseada em navegador da ferramenta de linha de comando SQL*Plus.

Isso é feito simplesmente visitando o iSQL*Plus URL para seu banco de dados e instalação. O URL exato varia, mas normalmente está no seguinte formato:http://machine_name.domain:port/isqlplus

SQL*Plus para Windows


Se você estiver usando o Windows, também há uma versão Windows GUI do SQL*Plus, que normalmente pode ser iniciada a partir do menu Iniciar:Start > Programs > Oracle > Application Development > SQL Plus .

Enviando uma consulta para um arquivo


Agora que você está conectado ao SQL*Plus, podemos começar a criar nosso arquivo.

Modificar configuração do SQL*Plus


O primeiro passo é definir algumas configurações do sistema SQL*PLus usando o SET demonstração.

Para este exemplo, alteraremos manualmente essas configurações uma vez antes de nossa consulta e geração de arquivos, mas, se desejar, você pode alterar os padrões de várias configurações em seu User Profile , localizado em login.sql Arquivo.
set colsep ,
set headsep off
set pagesize 0
set trimspool on

As primeiras configurações você normalmente não deseja alterar, mas explicaremos brevemente o que cada uma realiza.
  • colsep é o caractere separador usado para dividir suas colunas. Para um .csv arquivo, esta é uma vírgula simples.
  • headsep é o caractere separador para a linha de cabeçalho (se você precisar de um). Neste exemplo, não estamos gerando a linha de cabeçalho, então deixaremos este off .
  • pagesize é o número de linhas “por página”. Essa é uma configuração um pouco arcaica destinada à impressão sem muitas linhas por página. Com um valor de 0 , não usamos páginas porque estamos gerando um arquivo. Se você optar por mostrar o header linha, defina pagesize para um número muito grande (maior do que o número esperado de resultados de registro na consulta), portanto, sua linha de cabeçalho será exibida apenas uma vez em vez de uma vez "por página".
  • trimspool definido como on simplesmente remove os espaços em branco à direita.

Agora, as duas configurações finais precisarão ser alteradas dependendo da sua consulta.
set linesize #
set numwidth #
  • Para linesize , o # value deve ser o número total de colunas de saída em sua consulta resultante.
  • numwidth é a largura da coluna (número de espaços de caracteres) usada na saída de valores numéricos.

Comando SPOOL


Observação:O SPOOL comando está indisponível na versão SQL*Plus baseada em navegador, iSQL*Plus . Para gerar arquivos usando o iSQL*Plus, altere as configurações de preferência necessárias para a saída direta para um arquivo.

Com nossas configurações cuidadas, agora devemos dizer ao SQL*Plus para gerar um arquivo. Isso é feito usando o SPOOL demonstração.

Enquanto SPOOL está ativo , o SQL*PLus armazenará a saída de qualquer consulta no arquivo especificado.

Portanto, o próximo comando a ser inserido é spool :
spool file_path

Avançando um pouco, depois sua consulta é inserida, você também precisa interromper o spool então a saída do arquivo é fechada usando o spool off comando:
spool off

Inserir a consulta


A última etapa após as configurações serem modificadas e spool está em execução é inserir sua consulta. Para nosso exemplo simples, estamos gerando todos os livros de nossos books tabela.
SELECT
  title,
  primary_author
FROM
  books;

Não se esqueça do ponto e vírgula para fechar sua instrução de consulta e, em seguida, insira o acima mencionado spool off comando.

Pronto, você gerou um novo arquivo de texto com os resultados da sua consulta usando o SQL*Plus.

Dica:usando um arquivo de script


Em vez de inserir manualmente cada linha, sugere-se inserir todas as configurações em um novo arquivo de script que você pode executar no SQL*Plus em um único comando.

Crie um novo arquivo de script com o EDIT demonstração:
EDIT file_name

Agora cole toda a lista de comandos de script em seu novo arquivo e salve. O conteúdo completo do nosso script de exemplo pode ser encontrado abaixo.
set colsep ,
set headsep off
set pagesize 0
set trimspool on
set linesize 2
set numwidth 5

spool books.csv

SELECT
  title,
  primary_author
FROM
  books;

spool off

Para executar o script, basta usar o @ símbolo seguido do nome do arquivo:
@file_name

Seu script deve ser executado e o .csv arquivo criado como esperado.