当前位置:首页 » 编程语言 » sqlplus把sql结果导出
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

sqlplus把sql结果导出

发布时间: 2023-05-08 04:34:25

‘壹’ sql plus 中数据怎么输出

可以导出到excel中,你可以使用一个工具,plsql developer,很好用的。
把EXCEL倒入数据库,你可以用pb来做,不过首先你要用把excel变成txt文件,具体方法你可以在网上找,很多的。或者borland的导入导出工具,等等,很容易实现!
当然如果你实在不情愿用其他软件导的话
使用SQLPLUS自带的SPOOL命令也可以完成。

通过sql*plus输出xls,html两种格式文件.
首先创建两个脚本:
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 tables.xls
@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" @main

SQL*Plus: Release 9.2.0.4.0 - Proction 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 - Proction
With the Partitioning option
JServer Release 9.2.0.4.0 - Proction

Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Proction
With the Partitioning option
JServer Release 9.2.0.4.0 - Proction
[oracle@jumper utl_file]$ ls -l tables.xls
-rw-r--r-- 1 oracle dba 69539 Apr 25 10:30 tables.xls

‘贰’ SQL plus 中数据怎么样输出

/ as {sysdba|sysopr}:使用操作系统用户验证,以osdba或osopr一员的身份登录,如验证通过,被赋予sysdba或sysopr的权限

使用格式:sqlplus "/ as sysdba"

/nolog:不执行connect操作,直接进入sqlplus操作界面

-s:silent模式,不显示sqlplus启动信息和提示符

<:接受sql脚本从标准输入重定向

<<:立即文档

4.4.2 提示符命令

accept variable [number|char|date] [format format] [default default] [prompt text] [hide]:接受输入变量

例子:accept pwd char format a8 prompt Password: hide

column column [format format] [heading heading]:设定对某个域的显示格式

如果要同时改变某域的输出长度和标题,必须使用column命令

见emp的定义,name本为char(20),输出缩为10位,ty本为 char(1),扩张为6位,以便有足够的空间显示中文标题。

SQL>column name format a10 heading 姓名;

SQL>column ty format a6 heading 职位;

SQL>column age format 999999 heading 年龄;

SQL>column upd_ts format a14 heading 更新时间;

SQL>select name,ty,age,upd_ts from emp;

show option:显示SET的选项

spool [filename|off]:输出重定向文件

timing [start text|show|stop]:定时器

4.4.3 SET选项

autocommit:自动提交insert、update、delete带来的记录改变,缺省为off

colsep:域输出分隔符

define:识别命令中的变量前缀符,缺省为on,也就是&,碰到变量前缀符,后面的字符串作为变量处理

如果待更新内容包含&(在URL中很常见),而define非设为off,sqlplus会把&后面紧跟的字符串当成变量,提示输入,这里必须重新输入&和那个字符串,才能实现正常更新。将define设为off,就不再进行变量判断。

SQL>set define off;

SQL>update bbs_forum set url=http://www.xxx.com/bbs/show.php&forum_id=1 where forum_id=1;

echo:显示start启动的脚本中的每个sql命令,缺省为on

feedback:回显本次sql命令处理的记录条数,缺省为on

heading:输出域标题,缺省为on

linesize:输出一行字符个数,缺省为80

如果一行输出超过linesize,会回车到第二行,这样格式就会混乱。

markup html:html格式输出,缺省为off

通常需要与spool配合,否则html输出就没有意义。

numwidth:输出number类型域长度,缺省为10

长number类型的域常常因为输出长度的问题,引起误会。

pagesize:输出每页行数,缺省为24

为了避免分页,可设定为0。

termout:显示脚本中的命令的执行结果,缺省为on

timing:显示每条sql命令的耗时,缺省为off

trimout:去除标准输出每行的拖尾空格,缺省为off

trimspool:去除重定向(spool)输出每行的拖尾空格,缺省为off

4.4.4 例子

以文本形式下载表数据

oracle缺乏将表中数据输出至文本文件的工具,因此只能利用sqlplus和unix工具做变通的处理

sqlplus -s dbuser/oracle </dev/null

set colsep |;

set echo off;

set feedback off;

set heading off;

set pagesize 0;

set linesize 1000;

set numwidth 12;

set termout off;

set trimout on;

set trimspool on;

spool tmp.txt;

select * from emp;

spool off;

exit

EOF

tr -d < tmp.txt >emp.txt 删除空格,可选

注意:一定要用spool,如果在命令行中直接用>tmp.txt可能会造成数据缺失,至少在Unixware7上如此

假定某域是char(n),如中间出现回车\n,则下载出的这条记录的格式将会错乱,不宜采用此方法

‘叁’ 如何将SQL执行结果输出到文本文件中

如何将SQL执行结果输出到文本文件中
这个方法可以,要在sqlplus的环境里执行,
也可以直接在cmd里执行
sqlplus "username/password@tnaname"@abc.sql > result.log
比如
sqlplus "test1/test@orcl"@test.sql > result.log