2013-04-22 110 views
0

請幫助我創建一個過程,將數據從oracle數據庫導出到指定路徑爲.csv文件從另一個表中獲取學習名稱。創建.csv輸出的步驟

QUERY:select * from enrollment where study_name = 'FTY67' ;

我必須與所有studynames同一個數據庫的另一個表(研究)。

有沒有什麼方法可以創建程序,從研究表中取出學習名稱並重復此過程爲所有研究創建.csv文件?

閱讀一些在互聯網上的文章,但沒有發現任何與此相關的內容。 請幫忙。

+0

中所引用的線程答案只有有限的用途,因爲包必須由管理員啓用,通常是由於安全原因而禁用。然而有一種方法可以在客戶端使用常規的sql命令來做到這一點,因爲這可能是更常見的szenario。 – Devolus 2013-04-22 11:00:02

+0

如果您想要回答重複,請立即前往@Devolus。在我的公司,我們每天使用UTL_FILE數百次,而沒有人使用spool來做到這一點......我不確定這是「更常見」。 – Ben 2013-04-22 12:48:19

+0

在你的公司你有權訪問服務器? – Devolus 2013-04-22 14:29:24

回答

0

你應該看看spool和set命令。由於數據庫通常在遠程服務器上運行,因此無法將文件寫入本地計算機。爲了實現這個目標,yu必須在終端中禁用某些特性的情況下編寫一個sql,然後將結果緩存到可以訪問的文件中。

像這樣的東西可能讓你開始:

set term off colsep ";" pause off 
spool myfile 
select * from x; 
spool off 
exit 

有關的選項概述您可以用SET使用參考Oracle文檔瀏覽:http://docs.oracle.com/cd/B19306_01/server.102/b14357/ch12040.htm

有了正確的命令集,你可以創建CSV文件。

上述設置命令只是您可能需要的一些命令,但您可能需要addtional參數才能使CSV可用。

最好在file.sql寫這篇文章,並用sqlplus運行它:

sqlplus [email protected] @file