数据导出到excle脚本语句

来源:4-1 Oracle日期函数

慕容5378028

2016-05-14 13:53

请问oracle导出表数据到excle中的脚本语句咋写的?

写回答 关注

1回答

  • yuantongxin
    2016-05-20 10:18:08
    已采纳

    无法直接保存到excel中,但是可以保存到csv文件,同样是excel的格式,方法如下:
    譬如要把文件生成在d盘下的test目录下:
    1,在d盘根目录下新建test目录
    2,sqlplus以system用sysdba登录
    3,create or replace directory TMP as ’d:\test’;
    4,grant read on directory TMP to user;
    5,alter system set utl_file_dir='d:\test' scope=spfile;
    然后建立存储过程,表是随便建了一个,最后的文件名按要求需要按照当前日期的前一天生成,所以后边文件名的地方write_file_name处就按照要求来了
    create or replace PROCEDURE SP_OUTPUT
    (
    on_flag      OUT      NUMBER,
    out_reason   OUT      VARCHAR2)
    is
    v_code          number;
    v_text          varchar2(255);

    file_handle utl_file.file_type;
    Write_content VARCHAR2(1024);
    Write_file_name VARCHAR2(50);
    v_aaa varchar2(5);
    v_bbb varchar2(5);

    cursor cur_sp_out
    is
    select aaa,bbb
    from aaa;
    begin
    open cur_sp_out;
    loop
       fetch cur_sp_out into   v_aaa,v_bbb;
       exit when cur_sp_out%notfound;
       write_file_name := to_char(SYSDATE,'YYYYMMDD')||'.xls';
                                file_handle := utl_file.fopen('TMP',write_file_name,'a');
                                write_content := v_aaa||' '||v_bbb;
                               --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;

      v_code := 0;
    v_text := '完成';
    exception
    when others then
    on_flag := SQLCODE;
       out_reason := SQLERRM;
       begin
       IF utl_file.is_open(file_handle) THEN
       utl_file.fclose(file_handle);
       end IF;
       end;
       rollback;
    end;

    这样基本就完成了,但是建立完毕后需要重启数据库,否则文件写不进指定的目录下

    需要注意的是: write_content := v_aaa||' '||v_bbb;   这个位置

    v_aaa|| 和v_bbb中间引号的地方是TAB符,否则输出来的XLS文件中,会把这些字符串合在一个单元格中。

Oracle数据库开发利器之函数

常用函数应用,并且介绍了这些函数如何在查询中应用

32356 学习 · 36 问题

查看课程

相似问题