Oracle

如何將 Oracle 數據庫表解除安裝到 csv 文件中?

  • October 23, 2018

我需要從 Oracle 11g 第 1 版數據庫中檢索某些數據並將其作為一個或多個 CSV 文件提供。數據駐留在多個表和/或視圖中。所有這些都應該通過命令行工作。最好的方法是什麼?

阿倫,

現在 sqlcl 可從Oracle SQL Developer 4.1 EA2 (4.1.0.18.37) 獲得 ,您可以像使用舊的著名 sqlplus 一樣使用它。sqlcl 有 csv 的輸出格式設置

set sqlformat csv
spool x.csv
select * from yourtable[s];
spool off

有關 sqlcl 的更多資訊,請查看Kris 的部落格

在 sqlcl 之前最簡單的是使用 APEX 並將報告導出到 csv。在普通的舊 sqlplus 中,您可以使用

set lines 9999 -- the appropriate size
set head off  -- no header lines
set colsep ';' --column separator to ;
set pages 0 -- no pages
set feed off
select your data;
spool to_tofile
/
spool off

如果要將結果寫入應用程序伺服器或客戶端,則此方法效果最佳。如果必須將它們寫入數據庫伺服器,utl_file 可能是更好的選擇。

羅納德。

您應該查看內置的UTL_FILE包。您可以通過多種方式使用它。

  1. 您可以在使用 UTL_FILE 包寫入任意數量文件的包中編寫任意數量的過程。然後可以從包括 SQL*Plus 在內的幾乎任何應用程序呼叫這些過程。
  2. 您可以編寫一個 PL/SQL 腳本來完成相同的工作,並通過在命令行上指定 @scriptname 從 SQL*Plus 命令行本身呼叫該腳本。
  3. 您可以將使用 UTL_FILE 的塊直接粘貼到 SQL*Plus 中,但這只能用於一次導出,即使這樣也可能不是最佳途徑。

在最簡單的情況下,使用 UTL_FILE 的文件導出將由對FOPEN的呼叫、對PUT_LINE的一次或多次呼叫以及對FCLOSE的呼叫組成。

引用自:https://dba.stackexchange.com/questions/1479