我需要創建一個每晚運行的cron並從我的數據庫中刪除一些數據(較舊的數據)。我在debian上運行postgres。我怎麼做?我的服務器是tomcat6。有沒有人有一步一步的指示,包括腳本來做到這一點?cron作業在debian上從postgres中刪除舊數據
1
A
回答
0
你可以在/ etc/crontab中直接調用psql。該呼叫將遵循以下模式:
psql -c 'DELETE FROM my_table WHERE ...'
您需要爲'psql'提供適當的附加參數來創建數據庫連接。有關更多信息,請參閱documentation for psql。
1
幾種很好的方法。
您可能想要做的不僅僅是一個DELETE
。運行ANALYZE tbl
?處理多個表?
我想包在AA PLPGSQL功能的工作:
CREATE OR REPLACE FUNCTION myschema.f_maintain()
RETURNS text AS
$BODY$
DECLARE
_msg text := 'Report';
_min_ts timestamp := now()::timestamp - interval '5y'; -- max. age 5 years
_count int;
BEGIN
DELETE FROM tbl
WHERE my_ts < _min_ts
AND <some condition>;
GET DIAGNOSTICS _count = ROW_COUNT;
IF _count > 0 THEN
_msg := _msg || E'\nDeleted rows in tbl: ' || _count;
END IF;
ANALYZE tbl;
-- more ?
RAISE LOG '%', _msg;
END;
$BODY$
LANGUAGE plpgsql;
...從殼這樣稱呼它:
psql -p 5432 event -c 'SELECT myschema.f_maintain()'
日程安排系統用戶的Postgres cron作業:
crontab -e
要在每天的02:06運行它,添加一行:
06 02 * * * psql -p 5432 event -c 'SELECT myschema.f_maintain()' >/dev/null
3
在大多數情況下,我更喜歡帶有here-document的shell腳本。 (shell-variables在這裏很好地擴展了文檔):
#!/bin/sh
PSQL=/local/postgres/bin/psql
SOME_VALUE=123
$PSQL my_database <<THE_END
DELETE FROM my_table
WHERE my_column <= $SOME_VALUE
;
THE_END
相關問題
- 1. 使用cron作業刪除數據庫
- 2. 使用cron作業從數據庫表中刪除行
- 3. 從crontab刪除過期的cron作業
- 4. 如何設置cron作業以使用cPanel刪除舊的數據庫記錄?
- 5. 創建一個cron作業來刪除舊帖子
- 6. 從數據庫中刪除舊記錄(Postgres/Rails)
- 7. cron作業刪除特定時間
- 8. 使用PHP添加/刪除cron作業
- 9. 用PHP(捲曲)刪除單cron作業
- 10. Debian +刪除從*
- 11. 使用cron作業從文件夾中刪除文件
- 12. 在沒有cron作業選項的cPanel上設置cron作業
- 13. 正在從數據庫中刪除的作業未經處理
- 14. Cron作業自動刪除7天以上的文件夾Linux
- 15. 在cron作業
- 16. 在cron作業
- 17. 從cron作業創建空catalina.out(基於剛剛刪除的catalina.out)
- 18. 使用cron刪除舊的數據庫行?
- 19. 在cron作業中從gitolite中拉出
- 20. 從彈性搜索中刪除或刪除舊數據
- 21. 使用heroku從postgres數據庫中刪除數據(紅寶石在rails上)
- 22. 如何通過cron刪除舊備份?
- 23. Cron作業來確定Debian中的RAM使用情況
- 24. 如何在kohana中使用cron備份表格並刪除舊數據
- 25. SQLite刪除舊數據
- 26. 自動刪除舊數據
- 27. 如何刪除舊數據?
- 28. OpenERP - many2one刪除舊數據
- 29. 運行debian bash文件作爲cron作業
- 30. GoDaddy上的CakePHP Cron作業