Для очистки логов по условиям: до даты или обрезать до такого-то размера (в кол-ве записей или в Мб) можно использовать встроенные команды:
journalctl --vacuum-size=128M journalctl --vacuum-time=1d
Рассказываю сложные вещи простыми словами
Для очистки логов по условиям: до даты или обрезать до такого-то размера (в кол-ве записей или в Мб) можно использовать встроенные команды:
journalctl --vacuum-size=128M journalctl --vacuum-time=1d
INSERT INTO core.sd_table_change (c_table_name, n_change) VALUES (_c_table_name, (SELECT EXTRACT(EPOCH FROM now()))) ON CONFLICT (c_table_name) DO UPDATE SET c_table_name = _c_table_name, n_change = (SELECT EXTRACT(EPOCH FROM now()));
CREATE OR REPLACE FUNCTION core.cft_change_version() RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN
select core.sf_table_change_update(t.c_table_name_ref) from (select TG_TABLE_NAME as c_table_name_ref UNION select c_table_name_ref from core.sd_table_change_ref where c_table_name = TG_TABLE_NAME) as t; END IF; RETURN NEW;
END
$$;
ALTER FUNCTION core.cft_change_version() OWNER TO mobnius;
COMMENT ON FUNCTION core.cft_change_version() IS 'Триггер. Обновление справочной версии';
CREATE TABLE core.sd_table_change ( c_table_name text NOT NULL, n_change double precision NOT NULL ); ALTER TABLE core.sd_table_change OWNER TO mobnius; COMMENT ON TABLE core.sd_table_change IS 'Изменение состояния таблицы'; COMMENT ON COLUMN core.sd_table_change.c_table_name IS 'Имя таблицы'; COMMENT ON COLUMN core.sd_table_change.n_change IS 'Версия изменения'; ALTER TABLE core.sd_table_change ADD CONSTRAINT sd_table_change_pkey PRIMARY KEY (c_table_name);
CREATE TABLE core.sd_table_change_ref ( id smallint DEFAULT nextval('core.sd_table_change_ref_id_seq'::regclass) NOT NULL, c_table_name text NOT NULL, c_table_name_ref text NOT NULL ); ALTER TABLE core.sd_table_change_ref OWNER TO mobnius; COMMENT ON TABLE core.sd_table_change_ref IS 'Зависимость таблиц состояний'; COMMENT ON COLUMN core.sd_table_change_ref.c_table_name IS 'Таблица'; COMMENT ON COLUMN core.sd_table_change_ref.c_table_name_ref IS 'Зависимая таблица'; ALTER TABLE core.sd_table_change_ref ADD CONSTRAINT sd_table_change_ref_pkey PRIMARY KEY (id); ALTER TABLE core.sd_table_change_ref ADD CONSTRAINT sd_table_change_ref_c_table_name_fkey FOREIGN KEY (c_table_name) REFERENCES core.sd_table_change(c_table_name) NOT VALID; ALTER TABLE core.sd_table_change_ref ADD CONSTRAINT "sd_table_change_ref_cTable_name_ref_fkey" FOREIGN KEY (c_table_name_ref) REFERENCES core.sd_table_change(c_table_name) NOT VALID;
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
Установка pgAdmin4
sudo apt install pgadmin4Читать далее «Установка pgAdmin4 in Ubuntu»
В базе данных доступны следующие строки:
Требуется в колонке c_house_number, которая является типом text, найти число и сохранить преобразованное значение в новой колонке:
Читать далее «PostgreSQL: преобразование строки в число»#!/bin/bash psql -c "SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid() AND datname = 'vote-dev';" psql -c 'ALTER DATABASE "vote-dev" RENAME TO "vote-dev-db";'
select proname, prosrc
from pg_proc
where prosrc like '%search text%';
-- список ТУ заданной РЭС
create temp table t_registr_pts (
id uuid,
c_registr_pts text,
f_status_consume int,
b_technical_metering bool,
f_subscr uuid,
f_address uuid,
c_ps text,
c_line_ps text,
c_rp text,
c_line_rp text,
c_tp text,
c_line_tp text,
c_raion text,
c_city_name text,
c_settlement_name text,
c_street_name text
) on commit drop;
I found a good answer here: Tracking progress of an update statement
The trick is to first create a sequence (name it as you like):
CREATE SEQUENCE query_progress START 1;
Then append to your query’s WHERE part:
AND NEXTVAL('query_progress')!=0
Now you can query the progress:
SELECT NEXTVAL('query_progress');
Finally don’t forget to get rid of the sequence:
DROP SEQUENCE query_progress;
Note that this will most likely make your query run even slower and every time you check progress it will additionally increment the value. The above link suggested creating a temporary sequence but PostgreSQL doesn’t seem to make them visible across sessions.
do $$ declare _f_user int = 63; -- это идентификатор пользователя из таблицы core.pd_users: 63 - Милютин, 59 - Телегин _d_date timestamptz = now(); _n_longitude numeric(19, 6) = 47.2279506; _n_latitude numeric(19, 6) = 56.1484872; _c_network_status text = 'online'; begin insert into core.ad_tracking (fn_user, d_date, n_longitude, n_latitude, c_network_status) values(_f_user, _d_date, _n_longitude, _n_latitude, _c_network_status); end; $$ language plpgsql;
SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') AND C.relkind <> 'i' AND nspname !~ '^pg_toast' ORDER BY pg_total_relation_size(C.oid) DESC LIMIT 100;