Print all tables and Column Names

SELECT
    c.table_name,
    c.column_name,
    c.data_type,
    c.is_nullable,
    COALESCE(s.n_live_tup, 0) AS estimated_rows
FROM information_schema.columns c
LEFT JOIN pg_stat_user_tables s
    ON s.relname = c.table_name
   AND s.schemaname = c.table_schema
WHERE c.table_schema = 'public'
ORDER BY c.table_name, c.ordinal_position;

Constraints (PK, FK, UNIQUE, CHECK)

SELECT
    tc.table_name,
    tc.constraint_type,
    tc.constraint_name,
    string_agg(kcu.column_name, ', ' ORDER BY kcu.ordinal_position) AS columns
FROM information_schema.table_constraints tc
LEFT JOIN information_schema.key_column_usage kcu
    ON tc.constraint_name = kcu.constraint_name
   AND tc.table_schema = kcu.table_schema
WHERE tc.table_schema = 'public'
GROUP BY
    tc.table_name,
    tc.constraint_type,
    tc.constraint_name
ORDER BY
    tc.table_name,
    tc.constraint_type,
    tc.constraint_name;

Indexes

SELECT
    t.relname AS table_name,
    i.relname AS index_name,
    CASE
        WHEN ix.indisprimary THEN 'PRIMARY KEY'
        WHEN ix.indisunique THEN 'UNIQUE'
        ELSE 'INDEX'
    END AS index_type,
    string_agg(a.attname, ', ' ORDER BY x.ordinality) AS columns
FROM pg_class t
JOIN pg_namespace n
    ON n.oid = t.relnamespace
JOIN pg_index ix
    ON ix.indrelid = t.oid
JOIN pg_class i
    ON i.oid = ix.indexrelid
JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS x(attnum, ordinality)
    ON TRUE
JOIN pg_attribute a
    ON a.attrelid = t.oid
   AND a.attnum = x.attnum
WHERE n.nspname = 'public'
GROUP BY
    t.relname,
    i.relname,
    ix.indisprimary,
    ix.indisunique
ORDER BY
    t.relname,
    index_type DESC,
    index_name;

Foreign Key Relationship

SELECT
    tc.table_name,
    kcu.column_name,
    ccu.table_name AS referenced_table,
    ccu.column_name AS referenced_column
FROM information_schema.table_constraints tc
JOIN information_schema.key_column_usage kcu
    ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage ccu
    ON tc.constraint_name = ccu.constraint_name
WHERE tc.constraint_type = 'FOREIGN KEY'
  AND tc.table_schema = 'public'
ORDER BY tc.table_name, kcu.column_name;

Rls Policy

SELECT
    schemaname,
    tablename,
    policyname,
    permissive,
    roles,
    cmd,
    qual,
    with_check
FROM pg_policies
WHERE schemaname = 'public'
ORDER BY tablename, policyname;

Extensions

SELECT
    extname,
    extversion
FROM pg_extension
ORDER BY extname;

Functions

SELECT
    routine_name,
    routine_type,
    data_type
FROM information_schema.routines
WHERE specific_schema = 'public'
ORDER BY routine_name;

Views

SELECT
    table_name
FROM information_schema.views
WHERE table_schema = 'public'
ORDER BY table_name;

Enum Values

SELECT
    t.typname AS enum_name,
    e.enumsortorder,
    e.enumlabel
FROM pg_type t
JOIN pg_enum e
    ON t.oid = e.enumtypid
JOIN pg_namespace n
    ON n.oid = t.typnamespace
WHERE n.nspname = 'public'
ORDER BY enum_name, e.enumsortorder;

Print all important data (merged for copy/paste)