最近公司要辦研討會,需要寫一個報名網頁,收集參加研討會人員的資料,然後每天下午五點時將報名資料寄送給相關人員,由他們再處理後續的準備事項,所以需要處理下列需求:
1.將資料庫中的報名資料匯出成為一個檔案,例如csv,
2.然後再利用郵件附件方式寄送出去。
3.定時自動執行
第一項任務,因我們使用PostgreSQL 8.3,所以可以使用COPY指令來完成,例如報名資料表名字叫作attendee,為避免寫入權限的問題,我們將其寫入到/tmp/attendee.csv下,同時將其表頭一併輸出(注意:這項功能需要PostgreSQL 8.1版本以上才支援)
copy attendee to '/tmp/attendee.csv' csv header
因為要使用COPY指令需要到postgres這個使用者的權限,故我們可以將上述指令存檔為export.sql存放到/var/lib/pgsql目錄下
然後再利用su方式來完成:
su - postgres -c "psql seminar postgres -f /var/lib/pgsql/export.sql"
第二項任務可利用mutt這個程式來執行
$ mutt -s "報名資料表" -a /tmp/attendee.csv pm@mycompany.com -c boss@mycompany.com,partner@other.com < /dev/null
如果沒有mutt可以透過yum -y install mutt來安裝
完整的shell script如下:
#!/bin/bash
su - postgres -c "psql seminar postgres -f /var/lib/pgsql/export.sql"
mutt -s "報名資料表" -a /tmp/attendee.csv pm@mycompany.com -c boss@mycompany.com,partner@other.com < /dev/null
第三項任務就是排定cron job即可,在/etc/crontab中設定如下
01 17 * * * root /root/dump.sh
參考資料:
Sending files as mail attachments