zoukankan      html  css  js  c++  java
  • oracle表数据导出为文本形式

    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进行分列。
  • 相关阅读:
    185. [USACO Oct08] 挖水井
    JavaEE Tutorials (9)
    vjudge A
    HDU 2089 不要62
    国庆 day 2 下午
    国庆 day 2 上午
    国庆 day 1 下午
    P2899 [USACO08JAN]手机网络Cell Phone Network
    洛谷 P1690 贪婪的Copy
    洛谷 P2209 [USACO13OPEN]燃油经济性Fuel Economy
  • 原文地址:https://www.cnblogs.com/lanzi/p/2611623.html
Copyright © 2011-2022 走看看