`

使用sqlplus生成txt或者html报表

阅读更多
使用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)
2
0
分享到:
评论

相关推荐

    sqlplus 生成 html report 并用sendmail发送

    标题 "sqlplus 生成 html report 并用sendmail发送" 涉及到的是在IT领域中使用SQLPlus工具生成HTML格式的报表,并通过sendmail服务进行邮件发送的过程。SQLPlus是Oracle数据库的一个命令行接口,它允许用户执行SQL...

    sqlplus常用命令.txt

    - `sqlplus / as sysdba`: 以系统管理员身份连接到数据库。 - `conn username/password`: 连接数据库,输入用户名和密码。 #### 表空间创建 - `CREATE TABLESPACE`: 创建表空间,例如: ```sql CREATE TABLESPACE...

    Linux下面使用sqlplus热键冲突

    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命令使用大全 #### 一、概述 SQLPlus是Oracle数据库提供的一个非常实用的命令行工具,它不仅能够执行SQL语句,还可以通过一系列内置命令帮助用户更高效地管理数据库。本文将详细介绍SQLPlus中常用命令...

    SQLPLUS命令的使用大全.txt

    `批处理多条SQL语句,或者在文件中使用分号`;`或`/`分隔语句。 通过掌握这些SQLPLUS命令,你可以高效地管理和维护Oracle数据库,进行数据查询、插入、更新和删除,以及编写复杂的PL/SQL程序。不断实践和探索,将使...

    如何在cmd窗口使用sqlplus

    cmd窗口使用sqlplus

    sqlplus11.2 rpm安装包

    此外,SQLPlus还支持脚本执行、数据导入导出、生成报表等功能。 2. **Oracle SQLPlus 11.2**: 这个版本是指Oracle SQLPlus的11.2版,是Oracle Database 11g Release 2的一部分。11.2版带来了许多增强的功能和性能...

    使用SQLPlus.rar

    下面将详细介绍SQLPlus的使用及相关知识点。 1. SQLPlus的基本用法: - 启动SQLPlus:在命令行中输入`sqlplus username/password@database`,其中`username`是数据库用户名,`password`是对应密码,`database`是...

    sqlplus安装包附带使用说明

    4. **使用说明**:`使用说明.txt`文件提供了如何配置和使用SQLPlus的指导。通常,这会包括如何设置环境变量、启动SQLPlus、连接到数据库、执行SQL语句和查看结果的基本步骤。例如,连接到数据库的命令可能是`sqlplus...

    SQLPLUS使用手册

    8. **报表生成**:使用`SPOOL`命令可以把输出结果保存到文件中,便于生成报表或进一步处理。 9. **实用工具命令**:如`EXIT`退出SQLPLUS,`HELP`查看帮助信息,`SHOW`显示当前设置。 在SQL语句方面,`SQL语句一本...

    oracle sqlplus 工具的使用

    oracle sqlplus 工具的使用

    Sqlplus_登录数据库

    Sqlplus 登录数据库是指使用 Sqlplus 工具连接到 Oracle 数据库的过程。在这个过程中,用户需要输入用户名和密码,以便验证身份并访问数据库。 在 Sqlplus 中,用户可以使用两种方式连接到 Oracle 数据库。第一种...

    SQLPlus使用教程

    这个使用教程将帮助你理解和掌握SQLPlus的基本用法和常见命令。 一、SQLPlus的启动与退出 1. 启动SQLPlus:在命令行界面输入`sqlplus 用户名/密码@连接标识符`,如`sqlplus scott/tiger@orcl`,其中scott是用户名,...

    ORACLE SQLPLUS 命令大全

    用户可以使用 HELP 命令来查看命令的语法、参数选项和使用方法。 二、@ 命令 @ 命令用于运行调入内存的 SQL 文件,可以从本地文件系统或 Web 服务器上加载脚本文件。例如,@ F:/test.sql 可以执行 test.sql 脚本...

    SQLPlus命令使用大全PDF

    这个“SQLPlus命令使用大全PDF”很可能是为用户提供了一个全面的指南,涵盖了各种SQLPlus操作和命令。让我们深入探讨一下SQLPlus的一些核心功能和常见命令。 1. **连接数据库**: 使用`CONNECT`命令连接到Oracle...

    SQLPLUS命令的使用大全

    - 或者,更常见的做法是使用`@file_name`命令。 这种方式非常适合批量执行复杂的SQL脚本,尤其是在需要频繁运行相同查询或数据操作的情况下,能够极大地提高工作效率,减少手动输入错误的可能性。 ### 2. 编辑SQL...

    SQLPLUS在Bash_shell的使用

    【SQLPLUS在Bash_shell的使用】 SQLPLUS是Oracle数据库管理系统提供的一款强大的SQL命令行工具,它允许用户在命令行界面执行SQL语句、PL/SQL块以及进行数据库管理任务。在Bash Shell环境下,我们可以利用Shell脚...

    SQLPlus Usage Guide

    9. **报表生成**:通过`SPOOL`命令,SQLPlus可以将查询结果输出到文件,便于生成报表或进一步分析。 10. **SQL历史记录**:`HISTORY`命令显示最近执行的SQL语句,方便复用。 11. **元数据查询**:使用`DESCRIBE`或...

Global site tag (gtag.js) - Google Analytics