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
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.
set echo off
spool c:\test.csv
select /*csv*/ username, user_id, created from all_users;
spool off;
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
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.
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;