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盤下產生了一萬條資料了。