Oracle
需要一個可以執行 oracle 查詢並以 .csv 格式生成輸出的 shell 腳本
你能幫忙嗎?需要一個shell腳本,裡面有一個oracle查詢,並在特定位置產生一個.csv格式的輸出,這個腳本應該安排在一個執行的cron作業中,cron作業應該每天執行。
- 您需要編寫腳本並使用 spool 將輸出文件保存在 csv 中所需的路徑中。
#!/bin/bash sqlplus -silent $USER_PASS <<EOF SET SERVEROUTPUT ON SET FEEDBACK OFF DECLARE lvQuery Varchar2(32000); BEGIN select 'set heading off;' || chr(10) || 'spool "TABLE_NAME.csv"' || chr(10) || 'select * From TABLE_NAME;' || chr(10) || 'spool off' Into lvQuery from dual; dbms_output.put_line(lvQuery); / EXIT EOF
- 之後創建您的腳本,配置一個 cron 來觸發您想要觸發的日期來創建您的文件。
`nano /etc/crontab
- 1 * 1-5 root /path_to_your_file/your_shell.sh`
替代 Miguel 提供的腳本,如果 termout off 有效,您可以刪除空設備
/dev/null
,否則註釋掉。SET TERMOUT OFF
在 Windows 子系統 Ubuntu 上測試,將時間戳附加到文件名。#!/bin/bash FILE_NAME="/home/****/employees" TIME_STAMP=$(date "+%Y.%m.%d-%H.%M.%S") sqlplus.exe -s $CONN_STR <<EOF >/dev/null -- SET TERMOUT OFF SET PAGESIZE 3000 SET COLSEP "," SET LINESIZE 180 SET FEEDBACK OFF SPOOL $FILE_NAME$TIME_STAMP.csv SELECT * FROM EMPLOYEES SPOOL OFF EXIT EOF