PostgreSQL: วันที่สร้างตาราง


13

ฉันเพิ่งเสร็จสิ้นโครงการในระหว่างที่สร้างตารางฐานข้อมูลจำนวนมาก

ตารางเหล่านี้ส่วนใหญ่มีขยะชั่วคราวและฉันกำลังมองหาวิธีง่ายๆในการแสดงรายการตารางเหล่านี้ทั้งหมด

มีวิธีรายการตาราง DB ทั้งหมดเรียงตามวันที่สร้างของพวกเขา

คำตอบ:



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: มันทำงานได้เฉพาะบน greenplum


0

เป็นไปไม่ได้ที่จะได้รับเวลาในการสร้างตาราง แต่จริง ๆ แล้วคุณสามารถรับรายการของตารางที่สร้างขึ้นเมื่อเร็ว ๆ นี้ถ้าคุณดูดฐานข้อมูลของคุณเป็นประจำ คุณสามารถใช้แบบสอบถามนี้: เลือก * จาก pg_stat_user_tables โดย last_vacuum> ตอนนี้ () - ช่วงเวลา '3 วัน'; คุณสามารถเปลี่ยนช่วงเวลาตามความต้องการของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.