oracle表資料匯出為文本形式

來源:互聯網
上載者:User
oracle表資料匯出文本資料(xls或txt)
今天實驗了兩種方法,記錄如下
1.第一種方法:採用utl_file包
如下過程即可實現某表資料的匯出
CREATE OR REPLACE PROCEDURE p_tabletoxls IS
   v_file utl_file.file_type;
   CURSOR cur_emp IS
      SELECT ename, deptno FROM emp;
BEGIN
   IF utl_file.is_open(v_file) THEN
      utl_file.fclose(v_file);
   END IF;
   v_file := utl_file.fopen('UTL_FILE_DIR', 'emp.xls', 'w');
   FOR i IN cur_emp LOOP
      utl_file.put_line(v_file, i.ename || chr(9) || i.deptno); --chr(9)即欄位換列
   END LOOP;
   utl_file.fclose(v_file);
EXCEPTION
   WHEN OTHERS THEN
      dbms_output.put_line(SQLERRM); --寫入資料
      IF utl_file.is_open(v_file) THEN
         utl_file.fclose(v_file);
      END IF;
END p_tabletoxls;

註:ULT_file包的使用要先建立一個目錄存放資料
create or replace directory UTL_FILE_DIR as 'D:\dir';
grant read,write on directory UTL_FILE_DIR to ltwebgis;

2.第二種方法:採用ociuldr工具
先下載該工具,如下所示:
D:\ociuldr\ociuldr>ociuldr user=username/username@orcl query="SELECT ename, deptno FROM emp"
field=0x20 record=0x0a file=emp.xls
命令說明:
user  = username/password@tnsname
sql   = SQL file name, one sql per file, do not include ";"
query = select statement
field = seperator string between fields
record= seperator string between records
file  = output file name(default: uldrdata.txt)
field=0x20 表示欄位間用空格表示,也可以寫成field=' '。         
field=0x09 表示欄位間用分列表示,即在excel匯出時直接就按列匯出了。如果採用別的分隔字元匯出後在excel只有一列,可以採用excel進行分列。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.