我最近完成了一个项目,在此期间创建了许多数据库表。
这些表大多数包含临时垃圾,我正在寻找一种列出所有这些表的简单方法。
有没有一种方法可以列出根据创建日期排序的所有数据库表?
我最近完成了一个项目,在此期间创建了许多数据库表。
这些表大多数包含临时垃圾,我正在寻找一种列出所有这些表的简单方法。
有没有一种方法可以列出根据创建日期排序的所有数据库表?
Answers:
在Stackoverflow上找到了这个:https : //stackoverflow.com/questions/2577168/postgresql-table-creation-time
是的,有可能-有限制。
看到
/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;
不,据我所知这是不可能的。
该值不存储在任何系统表中(虽然会很好)。
这个查询
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
一定会有所帮助。
注意:它仅适用于青梅。