Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment exporter les résultats de la requête vers un fichier .txt lors de l'utilisation de SQLcl (Oracle)

Lors de l'interrogation de la base de données Oracle, vous pouvez utiliser le SPOOL commande pour exporter les résultats de votre requête dans un fichier texte lors de l'utilisation de SQLcl.

Exemple

Voici un exemple qui exporte une table entière :

SPOOL '/Users/barney/data/regions.txt';
SELECT * FROM regions;
SPOOL off;

Voici ce qu'il a fait, ligne par ligne :

  • La première ligne utilise le SPOOL commande pour spécifier où le fichier de sortie sera écrit. Assurez-vous de modifier /Users/barney/data/regions.txt à un emplacement sur votre système et un nom de fichier approprié.
  • Sur la deuxième ligne, j'ai exécuté la requête SQL - les résultats pour lesquels j'exporte. Dans ce cas, j'ai exporté l'ensemble des regions tableau.
  • Ensuite, j'ai tourné SPOOL éteint.

Voici à quoi ressemble le fichier résultant :

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

4 rows selected. 

Dans mon cas, mon SQLFORMAT a été défini sur ansiconsole , et donc la sortie reflète cela.

Vous pouvez le remplacer par n'importe quel format qui vous convient.

Voici un exemple d'export du résultat dans un format pouvant être utilisé comme fichier d'import avec sql*loader :

SET SQLFORMAT loader
SPOOL '/Users/barney/data/regions_loader.txt';
SELECT * FROM regions;
SPOOL off;
SET SQLFORMAT ansiconsole

Résultat :

 1|"Europe"|
 2|"Americas"|
 3|"Asia"|
 4|"Middle East and Africa"|

4 rows selected. 

Dans ce cas, j'ai également réinitialisé le SQLFORMAT retour à ansiconsole une fois le SPOOL l'opération était terminée.

Supprimer les commentaires

Vous pouvez supprimer le X rows selected avec 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

Résultat :

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

Dans ce cas, j'ai activé FEEDBACK de nouveau après l'exportation du fichier.

Ajouter les résultats

Par défaut, SPOOL utilise REPLACE , qui remplace le fichier s'il existe déjà.

Cependant, nous pouvons utiliser le APPEND argument pour ajouter les résultats au fichier.

Exemple :

SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' APPEND;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on

Fichier résultant :

   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    

Cet exemple a ajouté les résultats au fichier qui a été créé (et rempli) dans l'exemple précédent. Cela a entraîné la duplication du résultat dans le fichier.

Ecraser le fichier existant

Nous pouvons utiliser REPLACE pour écraser le fichier existant avec les résultats d'une nouvelle requête :

SET SQLFORMAT ansiconsole
SET FEEDBACK off
SPOOL '/Users/barney/data/regions_no_feedback.txt' REPLACE;
SELECT * FROM regions;
SPOOL off;
SET FEEDBACK on

Fichier résultant :

   REGION_ID               REGION_NAME 
____________ _________________________ 
           1 Europe                    
           2 Americas                  
           3 Asia                      
           4 Middle East and Africa    

Comme mentionné, REPLACE est le paramètre par défaut, nous aurions donc pu simplement omettre cet argument.