PostgreSQL: Data de criação de uma tabela


12

Concluí recentemente um projeto, durante o qual muitas tabelas de banco de dados foram criadas.

A maioria dessas tabelas contém lixo temporário e estou procurando uma maneira simples de listar todas essas tabelas.

Existe uma maneira de listar todas as tabelas de banco de dados classificadas de acordo com a data de criação?

Respostas:



5

Sim, é possível - com limitações.

Vejo

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

para mais informações

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

Não, isso não é possível, tanto quanto eu sei.

Esse valor não é armazenado em nenhuma tabela do sistema (seria bom).


1

Esta consulta

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 

vai ajudar com certeza.

NB: Funciona apenas em ameixa verde.


0

Não é possível obter o tempo de criação da tabela, mas é possível obter a lista de tabelas criadas recentemente se você aspirar seu banco de dados regularmente. Você pode usar esta consulta: selecione * em pg_stat_user_tables em que last_vacuum> now () - intervalo '3 dias'; você pode alterar o intervalo conforme sua necessidade.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.