中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Oracle通過Sqlplus結合Shell腳本方式生成Excel文件

發布時間:2020-08-07 16:39:05 來源:ITPUB博客 閱讀:318 作者:yhdmy 欄目:關系型數據庫
一、問題描述
       今天接到一個任務,是要求每天通過SQL腳本生成excel文件,并且自動發送到相關人員郵箱。這個需求我還真是沒有做過,之前只做過通過SQL腳本生成為HTML網頁文件。于是乎,我又開始的學習過程,如今的Internet時代,解決問題就是easy,很快就找到了eygle的博客(使用SQL*PLUS,構建完美excel或html輸出http://www.eygle.com/archives/2005/04/eoasqlplusieaae.html)。下面是學習過程中的實驗部分。

二、實驗
1.建立測試表

  1. SAM@dzwj > create table test1(id int,name varchar2(10),loc varchar2(30),hire_date date,email varchar2(20),department varchar2(20));
  2. Table created.

  3. SAM@dzwj > insert into test1 values (1,'sam1','beijing',sysdate,'sam1@oracle.com','it');
  4. 1 row created.
  5. SAM@dzwj > insert into test1 values (2,'sam2','beijing',sysdate,'sam2@oracle.com','it');
  6. 1 row created.
  7. SAM@dzwj > insert into test1 values (3,'sam3','beijing',sysdate,'sam3@oracle.com','it');
  8. 1 row created.
  9. SAM@dzwj > insert into test1 values (4,'sam4','beijing',sysdate,'sam4@oracle.com','it');
  10. 1 row created.
  11. SAM@dzwj > insert into test1 values (5,'sam5','beijing',sysdate,'sam5@oracle.com','it');
  12. 1 row created.

  13. SAM@dzwj > SAM@dzwj > commit;
  14. Commit complete.

  15. SAM@dzwj > select * from test1;

  16.         ID NAME LOC HIRE_DATE EMAIL DEPARTMENT
  17. ---------- ---------- ------------------------------ ------------------ -------------------- --------------------
  18.          1 sam1 beijing 28-NOV-17 sam1@oracle.com it
  19.          2 sam2 beijing 28-NOV-17 sam2@oracle.com it
  20.          3 sam3 beijing 28-NOV-17 sam3@oracle.com it
  21.          4 sam4 beijing 28-NOV-17 sam4@oracle.com it
  22.          5 sam5 beijing 28-NOV-17 sam5@oracle.com it


2.編輯 main.sql

  1. [oracle@testdb ~]$ cat main.sql
  2. set linesize 200 pagesize 10000
  3. set term off verify off feedback off
  4. set markup html on entmap on spool on preformat off
  5. alter session set NLS_DATE_FORMAT='YYYY-MM-DD HH24:MI:SS';
  6. spool /home/oracle/test1.xls
  7. @/home/oracle/get_tables.sql
  8. spool off
  9. exit

3.編輯 get_tables.sql

  1. [oracle@testdb ~]$ cat get_tables.sql
  2. select * from test1;

4.編輯執行文件 collect.sh

  1. [oracle@testdb ~]$ cat collect.sh
  2. #!/bin/bash
  3. . /home/oracle/.bash_profile
  4. DATE=`date +%Y%m%d`
  5. sqlplus sam/oracle@dzwj @/home/oracle/main
  6. mv /home/oracle/test1.xls /home/oracle/test1_${DATE}.xls

5.給collect.sh 執行權限

  1. [oracle@testdb ~]$ chmod u+x collect.sh

6.執行

  1. [oracle@testdb ~]$ ./collect.sh

  2. SQL*Plus: Release 11.2.0.4.0 Production on Wed Nov 29 11:00:19 2017

  3. Copyright (c) 1982, 2013, Oracle. All rights reserved.


  4. Connected to:
  5. Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
  6. With the Partitioning, OLAP, Data Mining and Real Application Testing options

  7. Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
  8. With the Partitioning, OLAP, Data Mining and Real Application Testing options

7.驗證
將文件傳回到本地機器打開,得到想要的excel文件
Oracle通過Sqlplus結合Shell腳本方式生成Excel文件

三、總結
       生活在Internet時代真是件幸福的事,此次任務算是告一段落,但是當中還是碰到一些小problems,比如一開始沒有加時間NLS_DATE_FORMAT變量的修改,導出的時間類型數據時沒有時間,只有年月日。總而言之,多學習,多實踐,沒錯的。向eygle大神致謝。  Where there is a will, there is a way.




向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渭源县| 富源县| 泸水县| 岳西县| 墨江| 陈巴尔虎旗| 屯门区| 泰宁县| 马鞍山市| 肥东县| 开阳县| 弋阳县| 郧西县| 长兴县| 长宁县| 启东市| 广河县| 保定市| 双辽市| 榕江县| 曲水县| 佛学| 玉门市| 竹山县| 鹿泉市| 苍山县| 登封市| 罗平县| 隆林| 同心县| 措美县| 丹巴县| 凤凰县| 夏邑县| 满洲里市| 扎鲁特旗| 台湾省| 桐柏县| 合作市| 河间市| 华蓥市|