Oracle通过Sqlplus结合Shell脚本方式生成Excel文件
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,一、问题描述 今天接到一个任务,是要求每天通过SQL脚本生成excel文件,并且自动发送到相关人员邮箱。这个需求我还真是没有做过,之前只做过通过SQL脚本生成为HTML网页文件。于是乎,我又开始的学习
千家信息网最后更新 2025年11月08日Oracle通过Sqlplus结合Shell脚本方式生成Excel文件一、问题描述 今天接到一个任务,是要求每天通过SQL脚本生成excel文件,并且自动发送到相关人员邮箱。这个需求我还真是没有做过,之前只做过通过SQL脚本生成为HTML网页文件。于是乎,我又开始的学习过程,如今的Internet时代,解决问题就是easy,很快就找到了eygle的博客(使用SQL*PLUS,构建完美excel或html输出http://www.eygle.com/archives/2005/04/eoasqlplusieaae.html)。下面是学习过程中的实验部分。
二、实验 1.建立测试表
2.编辑 main.sql
3.编辑 get_tables.sql
4.编辑执行文件 collect.sh
5.给collect.sh 执行权限
6.执行
7.验证 将文件传回到本地机器打开,得到想要的excel文件
三、总结 生活在Internet时代真是件幸福的事,此次任务算是告一段落,但是当中还是碰到一些小problems,比如一开始没有加时间NLS_DATE_FORMAT变量的修改,导出的时间类型数据时没有时间,只有年月日。总而言之,多学习,多实践,没错的。向eygle大神致谢。 Where there is a will, there is a way.
二、实验 1.建立测试表
- SAM@dzwj > create table test1(id int,name varchar2(10),loc varchar2(30),hire_date date,email varchar2(20),department varchar2(20));
- Table created.
- SAM@dzwj > insert into test1 values (1,'sam1','beijing',sysdate,'sam1@oracle.com','it');
- 1 row created.
- SAM@dzwj > insert into test1 values (2,'sam2','beijing',sysdate,'sam2@oracle.com','it');
- 1 row created.
- SAM@dzwj > insert into test1 values (3,'sam3','beijing',sysdate,'sam3@oracle.com','it');
- 1 row created.
- SAM@dzwj > insert into test1 values (4,'sam4','beijing',sysdate,'sam4@oracle.com','it');
- 1 row created.
- SAM@dzwj > insert into test1 values (5,'sam5','beijing',sysdate,'sam5@oracle.com','it');
- 1 row created.
- SAM@dzwj > SAM@dzwj > commit;
- Commit complete.
- SAM@dzwj > select * from test1;
- ID NAME LOC HIRE_DATE EMAIL DEPARTMENT
- ---------- ---------- ------------------------------ ------------------ -------------------- --------------------
- 1 sam1 beijing 28-NOV-17 sam1@oracle.com it
- 2 sam2 beijing 28-NOV-17 sam2@oracle.com it
- 3 sam3 beijing 28-NOV-17 sam3@oracle.com it
- 4 sam4 beijing 28-NOV-17 sam4@oracle.com it
- 5 sam5 beijing 28-NOV-17 sam5@oracle.com it
2.编辑 main.sql
- [oracle@testdb ~]$ cat main.sql
- set linesize 200 pagesize 10000
- set term off verify off feedback off
- set markup html on entmap on spool on preformat off
- alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
- spool /home/oracle/test1.xls
- @/home/oracle/get_tables.sql
- spool off
- exit
3.编辑 get_tables.sql
- [oracle@testdb ~]$ cat get_tables.sql
- select * from test1;
4.编辑执行文件 collect.sh
- [oracle@testdb ~]$ cat collect.sh
- #!/bin/bash
- . /home/oracle/.bash_profile
- DATE=`date +%Y%m%d`
- sqlplus sam/oracle@dzwj @/home/oracle/main
- mv /home/oracle/test1.xls /home/oracle/test1_${DATE}.xls
5.给collect.sh 执行权限
- [oracle@testdb ~]$ chmod u+x collect.sh
6.执行
- [oracle@testdb ~]$ ./collect.sh
- SQL*Plus: Release 11.2.0.4.0 Production on Wed Nov 29 11:00:19 2017
- Copyright (c) 1982, 2013, Oracle. All rights reserved.
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
7.验证 将文件传回到本地机器打开,得到想要的excel文件

三、总结 生活在Internet时代真是件幸福的事,此次任务算是告一段落,但是当中还是碰到一些小problems,比如一开始没有加时间NLS_DATE_FORMAT变量的修改,导出的时间类型数据时没有时间,只有年月日。总而言之,多学习,多实践,没错的。向eygle大神致谢。 Where there is a will, there is a way.
文件
学习
脚本
任务
时代
时间
过程
问题
实验
生成
幸福
人员
博客
变量
只有
告一段落
大神
就是
年月
年月日
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
必选排斥关系数据库实现
自研软件网络安全研究
国际标准 数据库
加工中心数据库与程序
网络文件服务器软件
本科生在软件开发有什么职位
朝阳软件开发培训
绝地求生服务器oc
启梦达网络技术有限公司招聘
漳州财务软件开发多少钱
数据库搭建同义词
大专选计算机网络技术就业好吗
服务器数据库的字符集怎么查
新疆学生网络安全教育
嵌入式软件开发招聘上海
塔科夫圣彼得堡是哪个服务器
数据库字段类型计算值
网易版我的世界连接不到服务器
mysql 数据库优点
安卓软件开发投入
必选排斥关系数据库实现
2019网络安全寄语微视频
广州品皓互联网科技有限公司
学校网络安全评估
关于网络技术的幼儿园教案
网络技术研发对联
东亚服是东南亚服务器吗
网络技术挑战赛报名费
数据库自动关联什么意思
关于网络技术的面试问题