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

Como exportar resultados de consulta para um arquivo .txt ao usar SQLcl (Oracle)


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.