it-swarm.com.de

PostgreSQL: Erstellungsdatum einer Tabelle

Ich habe kürzlich ein Projekt abgeschlossen, in dem viele DB-Tabellen erstellt wurden.

Die meisten dieser Tabellen enthalten temporären Müll, und ich suche nach einer einfachen Möglichkeit, alle diese Tabellen aufzulisten.

Gibt es eine Möglichkeit, alle DB-Tabellen nach ihrem Erstellungsdatum sortiert aufzulisten?

13
Adam Matan
8
Caleb

Ja, das ist möglich - mit Einschränkungen.

Sehen

https://stackoverflow.com/questions/18849756/automatically-drop-tables-and-indexes-older-than-90-days/18852752#18852752

für weitere Informationen

WITH CTE AS
(
    SELECT 
        table_name 

        ,
        (
            SELECT 
                MAX(pg_ls_dir::int)::text 
            FROM pg_ls_dir('./base') 
            WHERE pg_ls_dir <> 'pgsql_tmp' 
            AND  pg_ls_dir::int  <= (SELECT relfilenode FROM pg_class WHERE relname ILIKE table_name)
        ) as folder 


        ,(SELECT relfilenode FROM pg_class WHERE relname ILIKE table_name) filenode

    FROM information_schema.tables
    WHERE table_type = 'BASE TABLE'
    AND table_schema = 'public'
)

SELECT 
    table_name 
    ,(
        SELECT creation 
        FROM pg_stat_file(
            './base/' || folder || '/' || filenode 
        )
    ) as creation_time
FROM CTE;
5
Quandary

Nein, soweit ich weiß, ist das nicht möglich.

Dieser Wert wird in keiner der Systemtabellen gespeichert (wäre aber nett).

Diese Abfrage

select pslo.stasubtype, pc.relname, pslo.statime
from pg_stat_last_operation pslo
join pg_class pc on(pc.relfilenode = pslo.objid)
and pslo.staactionname = 'CREATE'
order by pslo.statime desc 

wird sicherlich helfen.

NB: Es funktioniert nur auf Greenplum.

Es ist nicht möglich, die Erstellungszeit für Tabellen abzurufen, aber Sie können tatsächlich die Liste der kürzlich erstellten Tabellen abrufen, wenn Sie Ihre Datenbank regelmäßig staubsaugen. Sie können diese Abfrage verwenden: Wählen Sie * aus pg_stat_user_tables aus, wobei last_vacuum> now () - Intervall '3 Tage'; Sie können das Intervall nach Bedarf ändern.

0
user3837299