Guest User

Untitled

a guest
Jan 16th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1.  
  2. -- get list of tables/views
  3. SELECT CASE WHEN relkind = 'r' THEN 'table' WHEN relkind = 'v' THEN 'view' ELSE 'unknown' END as type,
  4. current_database() as Database,
  5. ns.nspname as Schema,
  6. relname as Table,
  7. --CASE WHEN ns.nspname = 'pg_catalog' THEN 'Catalog' WHEN ns.nspname = 'information_schema' THEN 'Information' ELSE 'User' END as TableType,
  8. pg_get_userbyid(relowner) AS definer,
  9. reltuples as RowNumber,
  10. description as Comment,
  11. relnatts as ColumnNumber,
  12. reltriggers as TriggersNumber,
  13. conname as Constraint,
  14. conkey as ColumnConstrainsIndexes,
  15. rel.oid as Oid,
  16. relacl as ACL,
  17. relhasoids as HasOids,
  18. relhassubclass as HasSubtables
  19. FROM pg_class rel
  20. INNER JOIN pg_namespace ns ON relnamespace = ns.oid
  21. LEFT OUTER JOIN pg_description des ON des.objoid=rel.oid AND des.objsubid=0
  22. LEFT OUTER JOIN pg_constraint c ON c.conrelid=rel.oid AND c.contype='p'
  23. WHERE (relkind = 'r' OR relkind = 'v') AND
  24. NOT ns.nspname like 'pg\_%' AND
  25. ns.nspname != 'information_schema'
  26. ORDER BY relkind, ns.nspname, relname;
  27.  
  28.  
  29. -- get list of fields/columns for tables/views/types
  30. SELECT CASE WHEN cl.relkind = 'r' THEN 'table' WHEN cl.relkind = 'v' THEN 'view' WHEN cl.relkind = 'c' THEN 'type' ELSE 'unknown' END as type,
  31. na.nspname as Schema,
  32. cl.relname as Table,
  33. att.attname AS Column,
  34. (select nspname from pg_namespace where oid = ty.typnamespace) as TypeSchema,
  35. CASE WHEN ty.typname = 'bpchar' THEN 'char' WHEN ty.typname = '_bpchar' THEN '_char' ELSE ty.typname END as TypeName,
  36. CASE WHEN ty.typname = 'bit' or ty.typname = 'interval' and att.atttypmod > 0 THEN att.atttypmod WHEN att.atttypmod > 0 THEN att.atttypmod - 4 ELSE att.atttypmod END as Precision,
  37. att.attlen as Length,
  38. att.attnum as Position,
  39. cs.relname AS SeqName,
  40. def.adsrc as DefaultValue,
  41. att.attnotnull = 'f' as Nullable,
  42. att.attisdropped as IsDropped,
  43. att.attinhcount as AncestorCount,
  44. att.attndims as Dimension,
  45. CASE WHEN attndims > 0 THEN true ELSE false END AS isarray,
  46. et.typname as elementaltypename,
  47. description as Comment
  48. FROM pg_attribute att
  49. JOIN pg_type ty ON ty.oid=atttypid
  50. JOIN pg_namespace tn ON tn.oid=ty.typnamespace
  51. JOIN pg_class cl ON cl.oid=attrelid
  52. JOIN pg_namespace na ON na.oid=cl.relnamespace
  53. LEFT OUTER JOIN pg_type et ON et.oid=ty.typelem
  54. LEFT OUTER JOIN pg_attrdef def ON adrelid=attrelid AND adnum=attnum
  55. LEFT OUTER JOIN pg_description des ON des.objoid=attrelid AND des.objsubid=attnum
  56. LEFT OUTER JOIN (pg_depend JOIN pg_class cs ON objid=cs.oid AND cs.relkind='S') ON refobjid=attrelid AND refobjsubid=attnum
  57. LEFT OUTER JOIN pg_namespace ns ON ns.oid=cs.relnamespace
  58. WHERE (cl.relkind = 'r' OR cl.relkind = 'v' OR cl.relkind = 'c') AND
  59. attnum > 0 AND
  60. attisdropped IS FALSE AND
  61. not na.nspname like 'pg_%' AND
  62. na.nspname != 'information_schema'
  63. ORDER BY cl.relkind, na.nspname, cl.relname, att.attnum;
Add Comment
Please, Sign In to add comment