oracle中把表匯出為txt檔案方法,oracletxt

來源:互聯網
上載者:User

oracle中把表匯出為txt檔案方法,oracletxt

      本篇列舉了幾種把oracle 表中的資料匯出成txt檔案的方法,目前只列舉了三種方式,如果後續發現更好的方法會持續添加進來。

 

1.plsqldev 裡面有一個選項可以把表以execl格式到時

 

 

2.使用spool

sqlplus / as sysdbaset linesize 1000set pagesize 0set echo offset termout offset heading offset feedback offSET trims ONset term offSET trimspool ONSET trimout ONspool '/archlog/exp/test.txt';select OWNER||' , '||SEGMENT_NAME||' , '||PARTITION_NAME||' , ' from dba_segments where rownum<100;spool off;

#輸出的test.txt檔案頭尾要編輯下
#set term off 只有在使用.sql指令檔時才起作用,如上雖然指定了 set term off但是還是會把結果輸出,也就是說set term off設定只對sql指令碼有用

 

3.使用UTL_FILE程式包

##UTL_FILE.FOPEN第一個參數為檔案路徑,不能直接指定絕對路徑,需要建立directory,然後指定我們建立的directory
sqlplus / as sysdba
create directory MY_DIR as '/home/oracle/';
grant read,write on directory dir_dump to HR;##也可以直接建立一個public directory

CREATE OR REPLACE PROCEDURE test IStestjiao_handle UTL_FILE.file_type;BEGIN  test_handle := UTL_FILE.FOPEN('MY_DIR','test.txt','w');    FOR x IN (SELECT * FROM TESTJIAO) LOOP      UTL_FILE.PUT_LINE(test_handle,x.ID || ',' || x.RQ ||',');    END LOOP;      UTL_FILE.FCLOSE(test_handle);EXCEPTION WHEN OTHERS THEN  DBMS_OUTPUT.PUT_LINE(SUBSTR(SQLERRM,1,2000));END;/

 

 

 


oracle將表A裡的資料匯出為txt檔案,用預存程序怎寫?

分幾個步驟
1,建立輸出路徑,比如你要在c盤test目錄下輸出,你就先要建立好這個test路徑

2,sqlplus下以sysdba登入,執行以下語句

3,create or replace directory TMP as 'c:\test';

4,grant read,write on directory TMP to 你要組建檔案的使用者;

5,alter system set utl_file_dir='c:\test' scope=spfile;
以上步驟執行完,需要重啟資料庫

6,最重要的一步開始了,建立預存程序
create or replace PROCEDURE SP_OUTPUTisfile_handle utl_file.file_type;Write_content VARCHAR2(1024);Write_file_name VARCHAR2(50);v_id int;v_form varchar2(10);cursor cur_sp_outisselect id,form from a;beginopen cur_sp_out;loop fetch cur_sp_out into v_id,v_form; exit when cur_sp_out%notfound; write_file_name := to_char(SYSDATE,'YYYYMMDD')||'.txt'; file_handle := utl_file.fopen('TMP',write_file_name,'a'); write_content := v_id||' '||v_form; --write file IF utl_file.is_open(file_handle) THEN utl_file.put_line(file_handle,write_content); END IF; --close file utl_file.fclose(file_handle); end loop; close cur_sp_out;end;
我建立了一個跟你一樣的測試表,資料如下
create table a(id int,form varchar2(10));insert into a values (1,'你好');insert into a values (2,'你很好');
然後執行預存程序
begin SP_OUTPUT;end;
執行完畢後,你在c盤test路徑下會發現已經有新檔案產生

檔案內容

預存程序的話,如果表名和欄位名跟你一致的話,你無須修改


 
怎把Oracle表中的資料匯出成Txt格式

上周做系統示範時需要手工製造一些文本資料充當資料來源,想偷偷懶就用了Toad工具直接查詢後匯出成csv格式。今天正好有點時間,整理了一下思路,用sql去實現文本資料的產生。寫了大致架構,有空時再來完善吧。 步驟如下: 建立一個sql指令碼 d:\czrk.sql,代碼如下: SET echo off SET feedback off SET newpage none SET pagesize 50000 SET linesize 20000 SET verify off SET pagesize 0 SET term off SET trims ON SET heading off SET trimspool ON SET trimout ON SET timing off SET verify off SET colsep | spool d:\czrk.txt SELECT sfzh || ',' || xm || ',' || xb || ',' || csrq || ',' || mz|| ',' || xzqh|| ',' || jzdz FROM m_czrk WHERE rownum<=10000; spool off sqlplus串連上資料庫,執行指令碼 sqlplus dc/dc@mydb; sqlplus>@d:\czrk.sql 這樣就在d盤下產生了一萬條資料了。
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.