2013-03-06 35 views

Trả lời

46

Sử dụng các ống chỉ:

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

Lưu ý rằng điều này sẽ tạo myoutputfile.txt trong thư mục mà từ đó bạn chạy SQL * Plus.

Nếu bạn cần phải chạy này từ một tập tin SQL (ví dụ, "tmp.sql") khi sqlplus khởi động và đầu ra vào một tập tin có tên là "output.txt":

tmp.sql:

select * from users; 

Command:

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

Tâm trí bạn, tôi không có một thể hiện của Oracle trước mặt tôi ngay bây giờ, vì vậy bạn có thể cần phải làm một số công việc riêng của bạn để gỡ lỗi những gì tôi đã viết từ ký ức.

+0

cảm ơn bạn nhưng tôi có thể hỏi nơi là file đến máy in myoutputfile.txt định vị? Ngoài ra những gì về người dùng không có quyền chạy spool? – Dreamer

+0

Ngoài ra làm thế nào chúng ta có thể chỉ định một đường dẫn/thư mục của tập tin đầu ra, đặc biệt là trong Windows? – Dreamer

+2

Tôi chưa bao giờ có may mắn chỉ định nơi mà các ống chỉ được viết để ngoại trừ để chạy 'sqlplus.exe' từ thư mục nơi đầu ra spool sẽ đi. – Marc

14

Rất giống với Marc, chỉ có sự khác biệt tôi sẽ làm sẽ là để ống chỉ với một tham số như sau:

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 

Và sau đó để gọi sqlplus như

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

Đúng. Tôi sẽ thêm 'set pages 0',' set trimspool on', vv Nhưng sau đó câu hỏi đã thay đổi và tôi phải đuổi theo một thứ khác! Đề xuất tốt mặc dù. – Marc

+0

Cảm ơn John, phiên bản của bạn trả về kết quả SQL sạch Tôi đã tìm kiếm –

2

chỉ để làm cho lời 2 dễ dàng hơn nhiều, bạn cũng có thể xác định thư mục nơi bạn có thể lưu tệp đã lưu của mình

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

sau t mũ chỉ với nano hoặc vi myoutputfile.txt, bạn sẽ thấy tất cả các bài hát sql.

hy vọng là giúp đỡ :)

2
spool "D:\test\test.txt" 

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

Truy vấn này sẽ ống chỉ là kết quả sql trong D: \ test \ test.txt

Các vấn đề liên quan