SchemaSpy is a neat tool to produce visual diagrams for most relational databases.
Here's how to use it to generate schema relationship diagrams for PostgreSQL databases:
-
Download the jar file from here (the current version is v6.1.0)
-
Get the PostgreSQL JDBC driver (unless your installed version of java is really old, use the latest JDBC4 jar file)
-
Run the command against an existing database. For most databases, the schema (-s option) we are interested in is the public one:
java -jar schemaspy-6.1.0.jar -t pgsql \
-s public -db [db name] -u [db user] -p [password] \
-host localhost -o /tmp \
-dp /path/to/JDBC/driver/postgresql-42.2.12.jar
The above example sends all the output to the /tmp folder, but that can be changed as desired.
SchemaSpy produces several different diagrams, but the main summary diagram is in:
/tmp/diagrams/summary/relationships.real.large.png.
If this happens to you, try to explicitly define the port on the host argument (e.g., -host localhost:5432)
password authentication failed for user "postgres" can be misleading.
If this does not work, make sure you have postgres defined (you can do this with \du inside the psql console).
You should have at least one user with Superuser privileges (to create the postgres user -> if it doesn't exist).