web-dev-qa-db-fra.com

Commande de spool: Ne pas générer d'instructions SQL dans un fichier

Je veux sortir une requête dans un fichier CSV et j'utilise le test ci-dessous comme un petit test;

spool c:\test.csv 
select /*csv*/ username, user_id, created from all_users;
spool off;

mais la sortie a l'état de sélection réel comme première ligne

> select /*csv*/ username    user_id     created from all_users
USERNAME    USER_ID CREATED
REPORT  52  11-Sep-13
WEBFOCUS    51  18-Sep-12

Est-ce qu'il y a un moyen d'éviter cela? J'ai essayé de penser à SET Heading Off, mais cela n'a pas changé. J'utilise SQL Developer et un script en cours d'exécution.

Merci Bruce

11
bnix

Malheureusement, SQL Developer n’honore pas pleinement la commande set echo off qui semblerait résoudre ce problème dans SQL * Plus.

La seule solution que j'ai trouvée pour cela consiste à enregistrer ce que vous faites en tant que script, par exemple. test.sql avec:

set echo off
spool c:\test.csv 
select /*csv*/ username, user_id, created from all_users;
spool off;

Et ensuite, à partir de SQL Developer, n’avez qu’un appel à ce script:

@test.sql

Et exécutez cela comme un script (F5).

Enregistrer en tant que fichier de script ne devrait pas être une tâche ardue pour autre chose qu'une requête ad hoc; et l'exécuter avec @ au lieu d'ouvrir le script et de l'exécuter directement n'est qu'un peu pénible.


Un peu de recherche a trouvé la même solution sur le Forum des développeurs SQL , et l'équipe de développement suggère son comportement intentionnel pour imiter ce que fait SQL * Plus; vous devez également exécuter un script avec @ afin de masquer le texte de la requête. 

23
Alex Poole
set echo off
spool c:\test.csv 
select /*csv*/ username, user_id, created from all_users;
spool off;
1
Walter Mitty

Mon script Shell appelle le fichier SQL et l'exécute. La sortie du spool contenait la requête SQL au début, suivie du résultat de la requête.

Cela n'a pas résolu mon problème:

set echo off

Cela a résolu mon problème:

set verify off
1
mdabdullah

Vous pouvez directement exporter le résultat de la requête avec l'option d'exportation dans le résultat grig . Cette exportation a diverses options à exporter. Je pense que ça va marcher.

0
Avrajit

Exécuter la requête en TOAD ou SQL DEVELOPER

---select /*csv*/ username, user_id, created from all_users;

Enregistrer au format .SQL dans le lecteur "C"

--- x.sql

exécuter la commande

---- set serveroutput on
     spool y.csv
     @c:\x.sql
     spool off;
0
nikhil kodipaka