Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
106 views
in Technique[技术] by (71.8m points)

How do I discover the structure of a PostgreSQL database?

I need to write a script that will output data from a PostgreSQL database that I do not know the structure of. What query will return the names of all tables in a database? And what query will list the names of all columns in a table?

question from:https://stackoverflow.com/questions/582657/how-do-i-discover-the-structure-of-a-postgresql-database

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The database query tool psql, part of the PostgreSQL distribution, provides table description functionality.

# psql postgres postgres
psql (9.1.0)
Type "help" for help.

postgres=# -- list all tables:
postgres=# d
           List of relations
 Schema |   Name    | Type  |  Owner   
--------+-----------+-------+----------
 public | my_table  | table | postgres
 public | my_table2 | table | postgres
(2 rows)


postgres=# -- describe table:
postgres=# d my_table
   Table "public.my_table"
 Column |  Type   | Modifiers 
--------+---------+-----------
 col1   | integer | 
 col2   | text    | 

The rest of the psql commands you can get with ?:

postgres=#   ?
General
  copyright             show PostgreSQL usage and distribution terms
  g [FILE] or ;         execute query (and send results to file or |pipe)
  h [NAME]              help on syntax of SQL commands, * for all commands
  q                     quit psql

Query Buffer
  e [FILE] [LINE]       edit the query buffer (or file) with external editor
  ef [FUNCNAME [LINE]]  edit function definition with external editor
  p                     show the contents of the query buffer
  
                     reset (clear) the query buffer
  s [FILE]              display history or save it to file
  w FILE                write query buffer to file

Input/Output
  copy ...              perform SQL COPY with data stream to the client host
  echo [STRING]         write string to standard output
  i FILE                execute commands from file
  o [FILE]              send all query results to file or |pipe
  qecho [STRING]        write string to query output stream (see o)

Informational
  (options: S = show system objects, + = additional detail)
  d[S+]                 list tables, views, and sequences
  d[S+]  NAME           describe table, view, sequence, or index
  da[S]  [PATTERN]      list aggregates
  db[+]  [PATTERN]      list tablespaces
  dc[S]  [PATTERN]      list conversions
  dC     [PATTERN]      list casts
  dd[S]  [PATTERN]      show comments on objects
  ddp    [PATTERN]      list default privileges
  dD[S]  [PATTERN]      list domains
  det[+] [PATTERN]      list foreign tables
  des[+] [PATTERN]      list foreign servers
  deu[+] [PATTERN]      list user mappings
  dew[+] [PATTERN]      list foreign-data wrappers
  df[antw][S+] [PATRN]  list [only agg/normal/trigger/window] functions
  dF[+]  [PATTERN]      list text search configurations
  dFd[+] [PATTERN]      list text search dictionaries
  dFp[+] [PATTERN]      list text search parsers
  dFt[+] [PATTERN]      list text search templates
  dg[+]  [PATTERN]      list roles
  di[S+] [PATTERN]      list indexes
  dl                    list large objects, same as lo_list
  dL[S+] [PATTERN]      list procedural languages
  dn[S+] [PATTERN]      list schemas
  do[S]  [PATTERN]      list operators
  dO[S+] [PATTERN]      list collations
  dp     [PATTERN]      list table, view, and sequence access privileges
  drds [PATRN1 [PATRN2]] list per-database role settings
  ds[S+] [PATTERN]      list sequences
  dt[S+] [PATTERN]      list tables
  dT[S+] [PATTERN]      list data types
  du[+]  [PATTERN]      list roles
  dv[S+] [PATTERN]      list views
  dE[S+] [PATTERN]      list foreign tables
  dx[+]  [PATTERN]      list extensions
  l[+]                  list all databases
  sf[+] FUNCNAME        show a function's definition
  z      [PATTERN]      same as dp

Formatting
  a                     toggle between unaligned and aligned output mode
  C [STRING]            set table title, or unset if none
  f [STRING]            show or set field separator for unaligned query output
  H                     toggle HTML output mode (currently off)
  pset NAME [VALUE]     set table output option
                         (NAME := {format|border|expanded|fieldsep|footer|null|
                         numericlocale|recordsep|tuples_only|title|tableattr|pager})
   [on|off]            show only rows (currently off)
  T [STRING]            set HTML <table> tag attributes, or unset if none
  x [on|off]            toggle expanded output (currently off)

Connection
  c[onnect] [DBNAME|- USER|- HOST|- PORT|-]
                         connect to new database (currently "postgres")
  encoding [ENCODING]   show or set client encoding
  password [USERNAME]   securely change the password for a user
  conninfo              display information about current connection

Operating System
  cd [DIR]              change the current working directory
  iming [on|off]       toggle timing of commands (currently off)
  ! [COMMAND]           execute command in shell or start interactive shell

Variables
  prompt [TEXT] NAME    prompt user to set internal variable
  set [NAME [VALUE]]    set internal variable, or list all if no parameters
  unset NAME            unset (delete) internal variable

Large Objects
  lo_export LOBOID FILE
  lo_import FILE [COMMENT]
  lo_list
  lo_unlink LOBOID      large object operations

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...