使用sqlplus生成txt报表
需求:通过在数据库上跑脚本来生成txt文件的报表(csv格式),使用逗号隔开每一项内容
使用sqlplus的spool来实现
下面列出调试成功的sql.(scott下的emp表)
在sql提示符下面输入@此文件名.sql来调用,在当前文件夹下生成report.txt文件
注:如果直接复制此内容到sql窗口中执行会导致生成的报表文件中出现其他废字符,需要手动修改,所以建议使用上面的方法
-- 关闭输出(避免产生不需要的数据)
set echo off
-- 在sql文件所在文件夹生成emp.txt文件
spool emp.txt
-- 关闭回显本次sql命令处理的记录条数
set feedback off
-- 每行最大字符数3000
set linesize 3000
-- 每页行数
set pagesize 0
-- sql命令前的提示
set sqlprompt ''
-- 去除重定向(spool)输出每行的拖尾空格 默认为off
set trimspool on
select '员工号' || ','
|| '员工姓名' || ','
|| '工作' || ','
|| '部门经理' || ','
|| '参加工作日期' || ','
|| '工资' || ','
|| '奖金' || ','
|| '部门编号'
from dual
union all
select empno || ','
|| ename || ','
|| job || ','
|| mgr || ','
|| to_char(hiredate,'yyyy-MM-dd') || ','
|| sal || ','
|| comm || ','
|| deptno
from emp;
spool off
-- 下面依次还原设置的参数到默认设置
set echo on
set feedback on
set linesize 100
set pagesize 24
set sqlprompt SQL>
set trimspool off
spool常用的设置
set colsep','; //域输出分隔符
set echo off; //显示脚本中的每个sql命令,缺省为on
set feedback off; //回显本次sql命令处理的记录条数,缺省为on
set heading off; //输出域标题,缺省为on
set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。
set termout off; //显示脚本中的命令的执行结果,缺省为on
set trimout on; //去除标准输出每行的拖尾空格,缺省为off
set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
导出文本数据的建议格式: SQL*PLUS环境设置
set echo off
set feedback off
set linesize 3000
set pagesize 0
set sqlprompt ''
set trimspool on
注:LINESIZE要稍微设置大些,免得数据被截断,它应和相应的TRIMSPOOL结合使用防止导出的文本有太多的尾部空格。
如果LINESIZE设置太大,会大大降低导出的速度
使用sqlplus生成html报表
通过在数据库上跑脚本来生成html文件的报表,使用html标记来显示内容
解决:只需要在刚刚的sql中加入下面一行即可实现此需求:
SET MARKUP HTML ON
优化:可以改变sql来增强效果:
select '员工号' ,
'员工姓名' ,
'工作' ,
'部门经理' ,
'参加工作日期' ,
'工资' ,
'奖金' ,
'部门编号'
from dual
union all
select to_char(empno) ,
ename ,
job ,
to_char(mgr) ,
to_char(hiredate,'yyyy-MM-dd') ,
to_char(sal) ,
to_char(comm) ,
to_char(deptno)
from emp;
注:附件内容
csvreport.sql 生成csv文件格式的报表
htmlreport.sql生成html文件格式的报表
关于小数字段的精度丢失解决...
在涉及到带小数的字段的时候,如果为.00的情况会丢失精度
解决方法:
trim(to_char(sal,'99999999999999.99'))
注:上面的99999999999999.99串是自定义的,请根据字段的大小酌情定义其长度
但是这个方法有个小问题,当值为0.00的时候,转换出来的字符串为:.00
当前还没有什么好点的办法来解决这个问题,把9改成0的话是可以,但前面会用0来替代空格,这样的话反而实现不了需求....
如果不考虑效率,可以用case处理下为0.00的情况
如下:
(case comm when 0.00 then '0.00' else trim(to_char(comm,'99999999999999.99')) end)
分享到:
相关推荐
标题 "sqlplus 生成 html report 并用sendmail发送" 涉及到的是在IT领域中使用SQLPlus工具生成HTML格式的报表,并通过sendmail服务进行邮件发送的过程。SQLPlus是Oracle数据库的一个命令行接口,它允许用户执行SQL...
- `sqlplus / as sysdba`: 以系统管理员身份连接到数据库。 - `conn username/password`: 连接数据库,输入用户名和密码。 #### 表空间创建 - `CREATE TABLESPACE`: 创建表空间,例如: ```sql CREATE TABLESPACE...
Linux下面使用sqlplus热键冲突 解决方案包中包括:libtermcap-devel-2.0.8-46.1.i386.rpm rlwrap-0.42.tar.gz readline-devel-5.1-1.1.i386.rpm
### SQLPlus命令使用大全 #### 一、概述 SQLPlus是Oracle数据库提供的一个非常实用的命令行工具,它不仅能够执行SQL语句,还可以通过一系列内置命令帮助用户更高效地管理数据库。本文将详细介绍SQLPlus中常用命令...
`批处理多条SQL语句,或者在文件中使用分号`;`或`/`分隔语句。 通过掌握这些SQLPLUS命令,你可以高效地管理和维护Oracle数据库,进行数据查询、插入、更新和删除,以及编写复杂的PL/SQL程序。不断实践和探索,将使...
cmd窗口使用sqlplus
此外,SQLPlus还支持脚本执行、数据导入导出、生成报表等功能。 2. **Oracle SQLPlus 11.2**: 这个版本是指Oracle SQLPlus的11.2版,是Oracle Database 11g Release 2的一部分。11.2版带来了许多增强的功能和性能...
下面将详细介绍SQLPlus的使用及相关知识点。 1. SQLPlus的基本用法: - 启动SQLPlus:在命令行中输入`sqlplus username/password@database`,其中`username`是数据库用户名,`password`是对应密码,`database`是...
4. **使用说明**:`使用说明.txt`文件提供了如何配置和使用SQLPlus的指导。通常,这会包括如何设置环境变量、启动SQLPlus、连接到数据库、执行SQL语句和查看结果的基本步骤。例如,连接到数据库的命令可能是`sqlplus...
8. **报表生成**:使用`SPOOL`命令可以把输出结果保存到文件中,便于生成报表或进一步处理。 9. **实用工具命令**:如`EXIT`退出SQLPLUS,`HELP`查看帮助信息,`SHOW`显示当前设置。 在SQL语句方面,`SQL语句一本...
oracle sqlplus 工具的使用
Sqlplus 登录数据库是指使用 Sqlplus 工具连接到 Oracle 数据库的过程。在这个过程中,用户需要输入用户名和密码,以便验证身份并访问数据库。 在 Sqlplus 中,用户可以使用两种方式连接到 Oracle 数据库。第一种...
这个使用教程将帮助你理解和掌握SQLPlus的基本用法和常见命令。 一、SQLPlus的启动与退出 1. 启动SQLPlus:在命令行界面输入`sqlplus 用户名/密码@连接标识符`,如`sqlplus scott/tiger@orcl`,其中scott是用户名,...
用户可以使用 HELP 命令来查看命令的语法、参数选项和使用方法。 二、@ 命令 @ 命令用于运行调入内存的 SQL 文件,可以从本地文件系统或 Web 服务器上加载脚本文件。例如,@ F:/test.sql 可以执行 test.sql 脚本...
这个“SQLPlus命令使用大全PDF”很可能是为用户提供了一个全面的指南,涵盖了各种SQLPlus操作和命令。让我们深入探讨一下SQLPlus的一些核心功能和常见命令。 1. **连接数据库**: 使用`CONNECT`命令连接到Oracle...
- 或者,更常见的做法是使用`@file_name`命令。 这种方式非常适合批量执行复杂的SQL脚本,尤其是在需要频繁运行相同查询或数据操作的情况下,能够极大地提高工作效率,减少手动输入错误的可能性。 ### 2. 编辑SQL...
【SQLPLUS在Bash_shell的使用】 SQLPLUS是Oracle数据库管理系统提供的一款强大的SQL命令行工具,它允许用户在命令行界面执行SQL语句、PL/SQL块以及进行数据库管理任务。在Bash Shell环境下,我们可以利用Shell脚...
9. **报表生成**:通过`SPOOL`命令,SQLPlus可以将查询结果输出到文件,便于生成报表或进一步分析。 10. **SQL历史记录**:`HISTORY`命令显示最近执行的SQL语句,方便复用。 11. **元数据查询**:使用`DESCRIBE`或...