PostgreSQL: дата створення таблиці


13

Нещодавно я закінчив проект, під час якого було створено багато таблиць БД.

Більшість цих таблиць містять тимчасове сміття, і я шукаю простий спосіб перерахувати всі ці таблиці.

Чи є спосіб перерахувати всі таблиці БД, відсортовані відповідно до дати їх створення?

Відповіді:



5

Так, можливо - з обмеженнями.

Подивитися

/programming/18849756/automatically-drop-tables-and-indexes-older-than-90-days/18852752#18852752

для подальшої інформації

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;

3

Ні, це неможливо, наскільки я знаю.

Це значення не зберігається в жодній із системних таблиць (було б непогано).


1

Цей запит

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 

допоможе напевно.

NB: Це працює лише на зеленій сливі.


0

Неможливо отримати час створення таблиці, але ви можете фактично отримати список таблиць, створених нещодавно, якщо регулярно проводити вакуумну базу даних. Ви можете використовувати цей запит: виберіть * з pg_stat_user_tables, де last_vacuum> now () - інтервал '3 дні'; ви можете змінити інтервал відповідно до ваших потреб.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.