oracle函数如何导出,oracle导出存储过程和函数

oracle 如何把数据库查询结果导出

1、打开oracle数据库,点击登陆选项,点击文件选项,点击新建选项,最后点击sql窗口;

创新互联公司公司2013年成立,是专业互联网技术服务公司,拥有项目成都网站设计、成都网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元浉河做网站,已为上家服务,为浉河各地企业和个人服务,联系电话:13518219792

2、然后在sql窗口中进行编写sql语句的操作,勇sql语句进行查询出想要导出来的数值;

3、然后在查询出来数据的地方,不要选中数据,把鼠标放到空白单元格处进行鼠标右键操作,找到复制到Excel选项;

4、然后在复制到excel中选择想要保存的格式--作为xls保存,打开后则是excel形式的数据;

5、默认的保存路径--将鼠标放在excel名称上--会出现路径--根据路径打开即可。

oracle中如何把查询结果导出到excel里面

oracle导出excel

一、oracle导出excel

方法一:最简单的方法---用工具plsql dev

执行File =newReport Window 。在sql标签中写入需要的sql,点击执行或按快捷键F8,会先吃出查询结果。在右侧工具栏,可以选择按钮另存为html、copy as html、exportresults,其中export results按钮中就可以导出excel文件、csv文件、tsv文件、xml文件。

方法二:最专业的方法---用原始工具sqlplus

原文参见:

我做了一点修改,如下所示:

1.main.sql

用以设置环境,调用具体功能脚本

2.功能脚本-get_tables.sql

为实现具体功能之脚本

通过这样两个脚本可以避免spool中的冗余信息,参考:

如何去除SQLPLUS中SPOOL的冗余信息

示例如下:

1.main.sql脚本:

[oracle@jumper utl_file]$ more main.sql

set linesize 200

set term off verify off feedback off pagesize 999

set markup html on entmap ON spool on preformat off

spool d:/tables.xls

@d:/get_tables.sql

spool off

exit

2.get_tables.sql脚本:

[oracle@jumper utl_file]$ more get_tables.sql

select owner,table_name,tablespace_name,blocks,last_analyzed

from all_tables order by 1,2;

3.执行并获得输出:

[oracle@jumper utl_file]$ sqlplus "/ as sysdba" @d:/main.sql

SQL*Plus: Release 9.2.0.4.0 - Production on Mon Apr 25 10:30:11 2005

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

Connected to:

Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning option

JServer Release 9.2.0.4.0 - Production

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production

With the Partitioning option

JServer Release 9.2.0.4.0 - Production

[oracle@jumper utl_file]$ ls -l tables.xls

-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls

[oracle@jumper utl_file]$

此处输出为xls文件,通过下图我们可以看到输出效果:

把main.sql脚本中的,spooltables.xls更改为spool tables.htm,我们可以获得htm格式输出,效果如下图:

方法三:最悲剧的方法,之所以称为悲剧,是因为这个方法其实很简单,但是你可能没有注意。

打开plsql dev工具,执行file=newsql window ,输入sql,点击工具栏“执行”按钮或按快捷键F8。会显示出结果集。

点击结果集的左上方,可全部选中结果集,然后右键=copy,直接粘贴到excel文件中就可以了!

方法四:最努力的方法,这种方法稍微有点麻烦,但不用写脚本,也不用psql dev工具,只用sql plus就可以了。

在sqlplus中,执行想要的sql,把结果集copy到文本文件中(或者直接用spool命令直接输入到文本文件中),把不必要的字符、空格替换成逗号",",然后另存为csv文件,最后在用excel另存为exl文件就可以了。

二、把excel文件数据导入到oracle的某个表中。

方法一:最省时的方法,需要借助plsql dev工具。

a.复制整个工作簿中的数据到某个表中。

点击excel工作区左上角,全部选中数据,ctrl+c 复制整个工作簿中的数据。在plsql dev中,编辑表格表的数据,点击数据展示区左上角,直接粘贴就可以了(注意excel的第一列应该保持为空,如果不为空可以增加一空列,不然你复制的数据就会少一列的)!如下图

所示:

b.复制某列的数据。

这个很容易,选中excel某一列的数据,复制,选中oracle某个表的某一列,直接粘贴就可以了。plsql dev和excel中的列可以相互复制。

方法二:最专业的方法,用sql loader。

原文地址:

1.录入excel 测试表格,test.xls。

2.另存为.csv格式

3.创建sql*loader控制文件test.ctl,内容如下:

Load data

Infile 'c:/test.csv'

insert Into table test Fields terminated by','(column1,column2,column3,column4,column5)

需要将数据文件拷贝到对应位置

4.到数据库中建立对应的测试表test

create table test (

column1 Varchar2(10),

column2 Varchar2(10),

column3 Varchar2(10),

column4 Varchar2(10),

column5 Varchar2(10)

)

5.执行导入命令

Sqlldr userid = system/manager control='C:/test.ctl'

导入成功!

附:

Sqlldr的函数关键字说明:

Userid --oracle用户名 userid = username/password

Control --控制文件名称 control =‘e:/insert.ctl’

Log –-日志文件名称 log = ‘e:/insert.log’

Bad --损坏文件名称

Data --data file name

Discard --discard file name

Discardmax --number of discards to allow(默认全部)

Skip --导入时跳过的记录行数(默认0)

Load --导入时导入的记录行数(默认全部)

Errors --允许错误的记录行数(默认50)

ctl文件内容说明:

Load data

Infile ‘e:/test.csv’ --数据源文件名称

Append|insert|replace --append在表后追加,insert插入空表,replace替代原有内容

Into table test --要导入的数据库表名称

[when id = id_memo] --过滤条件

Fields terminated by X’09’ --字段分隔符

(id,name,telphone) --字段名称列表

方法三:最悲剧的方法,创建oracle外部表,为了把excel中的数据导入到数据中而去建立外部表,大题小做了!

将excel文件另存为csv文件a.csv,然后创建一个外部表t,数据指向a.csv。然后根据外部表创建一个普通的表:

create table a asselect * from t ,这样就可以把最初的excel文件导入到oracle中的表了。

方法四:最古典的方法,拼接sql语句。如果你excel熟的话,这种方法也不错。

在excel中,把数据拼接成如下sql语句:

insert into empvalues('1','2','3');

insert into empvalues('4','5','6');

insert into empvalues('7','8','9');

copy 出以上sql,执行就可以了!!

如果需要从oracle中每天定时导出数据用什么方法?

1、创建数据库日志表导出为文本文件的脚本tabout.ctl或tabout.sql

注意:该日志导出后在c:\HttpLog目录下

tabout.ctl脚本内容如下:

SET NEWPAGE NONE

SET HEADING OFF

SET TERM OFF

SET SPACE 0

SET PAGESIZE 0

SET TRIMOUT ON

SET TRIMSPOOL ON

SET LINESIZE 2500

set feedback off

set echo off

SET VERIFY OFF

column v_date new_value filename;

select to_char(sysdate,'yyyymmdd') || '.log' v_date from dual;

spool ..\HttpLog\filename            

select id||','||name from orcluser.test;

spool off;

exit;

2、创建调用该脚本的logout.bat文件

logout.bat内容如下:

mkdir ..\HttpLog\

C:\oracle\ora92\bin\sqlplus orcluser/orcl @C:Oracleout.ctl

说明:该bat文件直接在当前目录下创建名为HttpLog的文件夹,以便tabout.ctl脚本输出的文件存放到该目录下。其通过调用Oracle中sqlplus可执行文件来执行tabout.ctl脚本,所以该文件直接双击即可运行,无需其他操作。

3、通过windows定时任务实现自动定期执行

“在控制面板——任务计划——添加任务计划”中建立定期将数据库中日志表数据导出为文本格式(如:你可以根据需求设置为每天对日志表数据进行导出)。根据你当前对日志文件路径的存储需求,修改上面两个脚本中的存储路径,在windows定时任务直接调用logout.bat文件执行即可。

oracle怎么导出数据

Oracle导出导出有两中方式:一、利用exp imp导出导入;二、利用Oracel数据泵expdp impdp导出导入。

一、利用exp imp导出导入

exp imp 语法如下:

exp:

1) 将数据库orcl完全导出

exp system/manager@orcl file=d:\orcl_bak.dmp full=y

2) 将数据库中system用户的表导出

exp system/manager@orcl file=d:\system_bak.dmp owner=system

3) 将数据库中表table1,table2导出

exp system/manager@orcl file=d:\table_bak.dmp tables=(table1,table2)

4) 将数据库中的表customer中的字段mobile以"139"开头的数据导出

exp system/manager@orcl file=d:\mobile_bak.dmp tables=customer query=\"where mobile like '139%' \"

imp:

1) 将备份文件bak.dmp导出数据库

imp system/manager@orcl file=d:\bak.dmp

如果数据表中表已经存在,会提示错误,在后面加上ignore=y就可以了。

2) 将备份文件bak.dmp中的表table1导入

imp system/manager@orcl file=d:\bak.dmp tables=(table1)

exp imp导出导入数据方式的好处是只要你本地安装了Oracle客户端,你就可以将服务器中的数据导出到你本地计算机。同样也可以将dmp文件从你本地导入到服务器数据库中。但是这种方式在Oracle11g版本中会出现一个问题:不能导出空表。Oracle11g新增了一个参数deferred_segment_creation,含义是段延迟创建,默认是true。当你新建了一张表,并且没用向其中插入数据时,这个表不会立即分配segment。

解决办法:

1、设置deferred_segment_creation参数为false后,无论是空表,还是非空表,都分配segment。

在sqlplus中,执行如下命令:

SQLalter system set deferred_segment_creation=false;

查看:

SQLshow parameter deferred_segment_creation;

该值设置后,只对后面新增的表起作用,对之前建立的空表不起作用,并且注意要重启数据库让参数生效。

2、使用 ALLOCATE EXTEN

使用 ALLOCATE EXTEN可以为数据库对象分配Extent,语法如下:

alter table table_name allocate extent

构建对空表分配空间的SQL命令:

SQLselect 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

批量生成要修改的语句。

然后执行这些修改语句,对所有空表分配空间。

此时用exp命令,可将包括空表在内的所有表导出。

二、利用expdp impdp导出导入

在Oracle10g中exp imp被重新设计为Oracle Data Pump(保留了原有的 exp imp工具)

数据泵与传统导出导入的区别;

1) exp和imp是客户端工具,他们既可以在客户端使用,也可以在服务端使用。

2) expdp和impdp是服务端工具,只能在Oracle服务端使用。

3) imp只适用于exp导出文件,impdp只适用于expdp导出文件。

expdp导出数据:

1、为输出路径建立一个数据库的directory对象。

create or replace directory dumpdir as 'd:\';

可以通过:select * from dba_directories;查看。

2、给将要进行数据导出的用户授权访问。

grant read,write on directory dumpdir to test_expdp;

3、将数据导出

expdp test_expdp/test_expdp directory=dumpdir dumpfile=test_expdp_bak.dmp logfile=test_expdp_bak.log schemas=test_expdp

注意:这句话在cmd窗口中运行,并且最后不要加分号,否则会提示错误。因为这句话是操作系统命令而不是SQL。

impdp导入数据:

1、给将要进行数据导入的用户授权访问。

grant read,write on directory dumpdir to test_impdp;

2、将数据导入

impdp test_impdp/impdp directory=dumpdir dumpfile=test_expdp_bak.dmp remap_schema=test_expdp:test_impdp

oracle怎么导出function和procedure,即函数和存储过程

使用oracle的一般都装了PL/SQL吧,对象窗口,找到对应的函数或者存储过程,右键查看或编辑。

一般单个我是这么用,如果很多的话可以参考一下网上提供的方法:

oracle 导出一个用户下的所有存储过程

方法一:

set echo off ;

set heading off ;

set feedback off ;

spool d:\tmp.txt

select text from user_source ;

spool off;

方法二:

使用PL/SQL 菜单 Tools -- Export user objects... ,对弹出的dialog中选择user和output file,选中要导出的内容,点击export导出就行了


文章标题:oracle函数如何导出,oracle导出存储过程和函数
分享网址:http://myzitong.com/article/dsdhide.html