web-dev-qa-db-de.com

Wie Oracle SQL-Ergebnis in eine Datei in Windows ausgeben?

Ich habe es versucht

select * from users 
save D:\test.sql create;

Aber SQL Plus gibt mir "no proper ended" Wie Pfad in Oracle SQL in Windows angeben?

28
Dreamer

Verwenden Sie die Spule:

spool myoutputfile.txt
select * from users;
spool off;

Beachten Sie, dass dadurch myoutputfile.txt in dem Verzeichnis erstellt wird, in dem Sie SQL * Plus ausgeführt haben.

Wenn Sie dies aus einer SQL-Datei (z. B. "tmp.sql") ausführen müssen, wenn SQLPlus gestartet und in eine Datei mit dem Namen "output.txt" ausgegeben wird:

tmp.sql:

select * from users;

Befehl:

sqlplus -s username/[email protected] @tmp.sql > output.txt

Wohlgemerkt, ich habe momentan keine Oracle-Instanz vor mir, daher müssen Sie möglicherweise einige Ihrer eigenen Arbeiten ausführen, um das zu debuggen, was ich aus dem Speicher geschrieben habe.

50
Marc

Sehr ähnlich zu Marc, der einzige Unterschied, den ich machen würde, wäre, auf einen Parameter wie diesen zu spulen:

WHENEVER SQLERROR EXIT 1
SET LINES 32000
SET TERMOUT OFF ECHO OFF NEWP 0 SPA 0 PAGES 0 FEED OFF HEAD OFF TRIMS ON TAB OFF
SET SERVEROUTPUT ON

spool &1

-- Code

spool off
exit

Und dann den SQLPLUS als aufrufen

sqlplus -s username/[email protected] @tmp.sql /tmp/output.txt
14
John D
spool "D:\test\test.txt"

select  
  a.ename  
from  
  employee a  
inner join department b  
on  
(  
  a.dept_id = b.dept_id  
)  
;  
spool off  

Diese Abfrage spoolt das SQL-Ergebnis in D:\test\test.txt

3
Shine

um die Antwort 2 zu vereinfachen, können Sie auch den Ordner definieren, in dem Sie Ihre gespeicherte Datei ablegen können

    spool /home/admin/myoutputfile.txt
    select * from table_name;
    spool off;

danach siehst du nur noch mit nano oder vi myoutputfile.txt die gesamte sql-spur.

hoffe das hilft :)

2
Mohamed Dernoun