Ao consultar o Oracle Database, você pode usar o
SPOOL
comando para exportar os resultados da consulta para um arquivo de texto ao usar SQLcl. Exemplo
Aqui está um exemplo que exporta uma tabela inteira:
SPOOL '/Users/barney/data/regions.txt';
SELECT * FROM regions;
SPOOL off;
Aqui está o que ele fez, linha por linha:
- A primeira linha usa o
SPOOL
comando para especificar onde o arquivo de saída será gravado. Certifique-se de alterar/Users/barney/data/regions.txt
para um local em seu sistema e um nome de arquivo apropriado. - Na segunda linha, executei a consulta SQL – os resultados para os quais estou exportando. Nesse caso, exportei todas as
regions
tabela. - Em seguida, virei
SPOOL
desligado.
Aqui está a aparência do arquivo resultante:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa 4 rows selected.
No meu caso, meu
SQLFORMAT
foi definido como ansiconsole
, e a saída reflete isso. Você pode alterar isso para qualquer formato adequado.
Aqui está um exemplo de exportação do resultado em um formato que pode ser usado como um arquivo de importação com sql*loader:
SET SQLFORMAT loader
SPOOL '/Users/barney/data/regions_loader.txt';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole
Resultado:
1|"Europe"| 2|"Americas"| 3|"Asia"| 4|"Middle East and Africa"| 4 rows selected.
Neste caso eu também resetei o
SQLFORMAT
de volta ao ansiconsole
uma vez que o SPOOL
operação havia sido concluída. Remover comentários
Você pode remover o
X rows selected
com SET FEEDBACK off
:SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt';
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Resultado:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Neste caso eu virei
FEEDBACK
novamente após exportar o arquivo. Anexar os resultados
Por padrão,
SPOOL
usa REPLACE
, que substitui o arquivo se ele já existir. No entanto, podemos usar o
APPEND
argumento para anexar os resultados ao arquivo. Exemplo:
SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Arquivo resultante:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Este exemplo anexou os resultados ao arquivo que foi criado (e preenchido) no exemplo anterior. Isso resultou na duplicação do resultado no arquivo.
Substituir o arquivo existente
Podemos usar
REPLACE
para substituir o arquivo existente com os resultados de uma nova consulta:SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' REPLACE;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on
Arquivo resultante:
REGION_ID REGION_NAME ____________ _________________________ 1 Europe 2 Americas 3 Asia 4 Middle East and Africa
Como mencionado,
REPLACE
é a configuração padrão, então poderíamos simplesmente omitir esse argumento completamente.