PostgreSQL:表格的创建日期


12

我最近完成了一个项目,在此期间创建了许多数据库表。

这些表大多数包含临时垃圾,我正在寻找一种列出所有这些表的简单方法。

有没有一种方法可以列出根据创建日期排序的所有数据库表?

Answers:



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;


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 

一定会有所帮助。

注意:它仅适用于青梅。


0

无法获得表创建时间,但如果定期清理数据库,则实际上可以获取最近创建的表的列表。您可以使用以下查询:从pg_stat_user_tables中选择*,其中last_vacuum> now()-interval'3 days'; 您可以根据需要更改时间间隔。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.