這次的任務是統計一周內的top500詞條。
資料來源:來自於oracle資料庫。
需求:產生excel表格並發送郵件給相關人。
由於是首次接觸這樣的任務(在伺服器上編寫指令碼,處理資料),在這個過程中遇到了很多問題,也學習了很多知識點:包括shell指令碼的使用,相關linux命令,shell指令碼發送郵件,perl指令碼的使用,perl指令碼串連資料庫,複雜sql語句,perl指令碼處理資料、產生excel(格式設計),perl指令碼無法逸出字元為可識別的漢字、因此需要用java程式來處理已經產生的excel,解碼utf8為可識別的漢字,java讀寫excel等等很多知識點。這個過程一下子接觸了很多對於別人來說可能很easy的東西,充實了自己。贊一下自己! 這部分知識分成以下幾部分來總結:
一、shell相關
二、perl相關
三、java相關
四、複雜sql語句
這幾部分其中涉及的內容可能再細分。
一、shell相關1、日期: date=`date "+%Y%m%d"`//今天的日期
date2=`date -d "7 days ago" "+%Y%m%d"`//7天前的日期 year=`date -d yesterday "+%Y"`
mon=`date -d yesterday "+%m"`
day=`date -d yesterday "+%d"`
weekDay=`date -d yesterday "+%u"`//數字表示的日期(從星期一開始1-7) linux
shell date用法 一行直接寫一個date,會在命令列輸出顯示當前的日期2、發郵件: echo "${date} Top500 in A Week Report" | /usr/bin/mutt -a top500.xls -s "Top500 in A Week Report ${date}"
xxx@163.com 這一行的運行結果是:給xxx@163.com發送郵件,標題為“Top500
in A Week Report 20111129”,附件為top500.xls,郵件內文內容為“20111129 Top500 in A Week Report”。
3、調用其他指令碼: 調用shell指令碼:sh /shellpath/xx.sh 調用perl指令碼:cd /perlpath perl xx.pl $參數1 $參數2 $參數34、調用java程式:
export JAVA_HOME=/application/jdk1.6.0_10export PATH=$JAVA_HOME/bin:$PATHexport SH_HOME=/home/loganalysis/import/webapps/ROOT/wikiexport LIB=$SH_HOME/WEB-INF/libexport CLASSPATH=/home/loganalysis/import/webapps/ROOT/shell/extlib/javax.servlet.jar:$LIB/../classes:$LIB/jxl.jar:$CLASSPATHexport LANG=zh_CN.GB18030export LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CNARGS="-Xms32m -Xmx512m -Djava.awt.headless=true "year=`date "+%Y"`mon=`date "+%m"`day=`date "+%d"`file=/home/userX/top500/top500.xls//參數們java $ARGS a.b.c.classPath.DecodeExcelJXL ${file} ${year}-${mon}-${day}//(由於上面CLASSPATH中寫了類的路徑,所以這裡可以這樣調用類)
5、其他:
echo "要顯示的內容,比如時間為${date}"
printf "時間為%s \n",${date};//有格式,斷行符號,末尾加分號