Планирование задания для усечения записи таблицы в PostgreSQL

Я ищу способ усекать записи таблицы автоматически в PostgreSQL один раз в неделю и оставить запись последних 7 дней в таблице. Я создал таблицу с именем logged_actions в контрольном shcema, вот запросы таблицы экспорта:

--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

SET search_path = audit, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: logged_actions; Type: TABLE; Schema: audit; Owner: postgres; Tablespace: 
--

CREATE TABLE logged_actions (
    schema_name text NOT NULL,
    table_name text NOT NULL,
    user_name text,
    action_tstamp timestamp with time zone DEFAULT now() NOT NULL,
    action text NOT NULL,
    original_data text,
    new_data text,
    query text,
    CONSTRAINT logged_actions_action_check CHECK ((action = ANY (ARRAY['I'::text, 'D'::text, 'U'::text])))
)
WITH (fillfactor='100');


ALTER TABLE audit.logged_actions OWNER TO postgres;

--
-- Name: logged_actions_action_idx; Type: INDEX; Schema: audit; Owner: postgres; Tablespace: 
--

CREATE INDEX logged_actions_action_idx ON logged_actions USING btree (action);


--
-- Name: logged_actions_action_tstamp_idx; Type: INDEX; Schema: audit; Owner: postgres; Tablespace: 
--

CREATE INDEX logged_actions_action_tstamp_idx ON logged_actions USING btree (action_tstamp);


--
-- Name: logged_actions_schema_table_idx; Type: INDEX; Schema: audit; Owner: postgres; Tablespace: 
--

CREATE INDEX logged_actions_schema_table_idx ON logged_actions USING btree ((((schema_name || '.'::text) || table_name)));


--
-- Name: logged_actions; Type: ACL; Schema: audit; Owner: postgres
--

REVOKE ALL ON TABLE logged_actions FROM PUBLIC;
REVOKE ALL ON TABLE logged_actions FROM postgres;
GRANT ALL ON TABLE logged_actions TO postgres;
GRANT SELECT ON TABLE logged_actions TO PUBLIC;


--
-- PostgreSQL database dump complete
--

Должен ли я использовать Cron или что-то еще?

2 ответа

Добавьте это к простому cronjob в Linux

sudo su - postgres -c "psql -c 'TRUNCATE TABLE table_name;' database_name"

У pgAdmin есть планировщик pgAgent:

Представленный в pgAdmin III v1.4, pgAgent является агентом планирования заданий для PostgreSQL, способным выполнять многошаговые задачи пакетной обработки / оболочки и SQL в сложных расписаниях.

Другие вопросы по тегам