怎么从oracle导出数据到excel

怎么从oracle导出数据到excel,第1张

1、首先在SQL Window窗口中,查询需要导出的数据

2、在查询的结果集上(注意不要选中任何一个行或者单元格)右键--【Copy to Excel】-->【Copy as xls/xlsx】导出到97-2003格式的.xls或者2007之后的xlsx文件.

3、如果不想导出查询的全部数据,可以在左侧选中需要导出的行,然后步奏同上。

4、点击导出后,系统自动打开导出的excel文件内容,这里面包括数据以及查询这些数据的sql脚本。

5、点击“SQL Statement”可以查看数据库脚本。

6、下面就是 *** 作excel文件了。点击【文件】--【另存为】保存excel文件

7、选择保存路径,输入文件名称。

注意事项:导出到excel的时候,行记录数也会被自动导出。如果不需要可以在excel中将此列删除即可。

*** 作步骤如下:准备数据:在excel中构造出需要的数据2.将excel中的数据另存为文本文件(有制表符分隔的)3.将新保存到文本文件中的数据导入到pl*sql中在pl*sql中选择tools-->textimporter,在出现的窗口中选择"DatafromTextfile",然后再选择"Opendatafile",在d出的文件选择框中选中保存有数据的文本文件,此时将会看到datafromtextfile中显示将要导入的数据4.在configuration中进行如下配置注:如果不将"Nameinheader"勾选上会导致字段名也当做记录被导入到数据库中,从而导致数据错误5.点击datatooracle,选择将要导入数据的表,并在fields中将文本中的字段与表中的字段进行关联6.点击import按钮进行导入7.查看导入的数据

无法直接保存到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文件中,会把这些字符串合在一个单元格中。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10014565.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存