Datenbank-Analyse mit SchemaSpy

SchemaSpy ist ein Java-basiertes Kommandozeilen-Programm zur Datenbank-Analyse. Mit SchemaSpy kann man ein visuelles Abbild einer Datenbank in Form von HTML Dokumenten erstellen. Damit können die Tabellen, Spalten und Relationen einer Datenbank schnell und einfach dokumentiert werden.

Wie funktioniert SchemaSpy

SchemaSpy funktioniert mit allen Datenbanken die JDBC und SQL-92 Standard unterstützen. Darunter fallen unter anderen Oracle, MySQL, DB2, SQLite, H2 und viele mehr. Als Basis für die extrahierten Informationen dient das INFORMATION_SCHEMA der im SQL-92 Standard definiert, wie RDBMS-Datenbanken die Schema-Informationen mit seinen Wörterbuchtabellen implementieren soll. Und tatsächlich implementieren die meisten RDBMS-Datenbanken Teile der Standardspezifikation so dass eine Datenbank-Analyse mit SchemaSpy möglich wird, ohne für jedes DMBS eine eigene Methode implementiert werden muss, die Daten abzufragen.

Über SchemaSpy

SchemaSpy liegt aktuell in Version 6.1 vor und kann unter http://schemaspy.org/ heruntergeladen werden. Es wird unter der LGPL-3.0 License angeboten.

Die GNU Lesser General Public License oder LGPL  erlaubt den Entwicklern und Firmen das Verwenden und Einbinden von LGPL-Software in eigene Software, ohne durch ein starkes Copyleft gezwungen zu sein, den Quellcode der eigenen Software-Teile offenzulegen. Lediglich das Ändern der LGPL-Software-Teile muss Endnutzern ermöglicht werden: Deshalb die LGPL-Teile meist in Form einer dynamischen Programmbibliothek verwendet, um so die notwendige Trennung zwischen proprietären und quelloffenen LGPL-Teilen zu ermöglichen.

https://de.wikipedia.org/wiki/GNU_Lesser_General_Public_License

Die SchemaSyp Dokumentation findet man unter https://schemaspy.readthedocs.io/en/latest/.

SchemaSpy wurde ursprünglich von John Currier erstellt und verwaltet. Das Projekt später von Nils Petzäll übernommen und weiterentwickelt, da er der Meinung war, dass die Arbeit an SchemaSpy fortgesetzt und viele noch bestehende Probleme behoben werden sollten. Die letzte veröffentlichte Version von John Currier war im Jahr 2010 und Nils Petzäll hat das Projekt im Juni 2016  übernommen und SchemaSpy unter https://github.com/schemaspy/schemaspy ein neues Zuhause gegeben. Aktuell beteiligen sich an dem Projekt 25 Contributors von denen es sehr aktiv weiterentwickelt wird. (Stand heute (24.07.2021) gibt es 166 Issues und 14 Pull-Requests)

SchemaSpy ausprobiert

Die letzte Version von SchemaSpy findet man immer unter https://github.com/schemaspy/schemaspy/releases/. Aktuell ist das die Version 6.1.0 (schemaspy-6.1.0.jar). Das Jar File kann mit jedem einigermaßen aktuellen JDK oder JRE unter Windows, Linux und auf dem Max ausgeführt werden.

Ich teste es mal unter Linux mit der MySQL Datenbank. Also erst mal schemaspy-6.1.0.jar herunterladen.

wget https://github.com/schemaspy/schemaspy/releases/download/v6.1.0/schemaspy-6.1.0.jar
--2021-07-24 18:47:03--  https://github.com/schemaspy/schemaspy/releases/download/v6.1.0/schemaspy-6.1.0.jar
Auflösen des Hostnamens github.com (github.com) … 140.82.121.4
Verbindungsaufbau zu github.com (github.com)|140.82.121.4|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 302 Found
Platz: https://github-releases.githubusercontent.com/64106157/d9991e80-d9a6-11e9-8061-6e0c67971f70?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210724%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210724T164703Z&X-Amz-Expires=300&X-Amz-Signature=d57d316929e55b99cf972102b292f7277acb09b3bacbb366f741c86f6ccccc56&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=64106157&response-content-disposition=attachment%3B%20filename%3Dschemaspy-6.1.0.jar&response-content-type=application%2Foctet-stream [folgend]
--2021-07-24 18:47:03--  https://github-releases.githubusercontent.com/64106157/d9991e80-d9a6-11e9-8061-6e0c67971f70?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20210724%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20210724T164703Z&X-Amz-Expires=300&X-Amz-Signature=d57d316929e55b99cf972102b292f7277acb09b3bacbb366f741c86f6ccccc56&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=64106157&response-content-disposition=attachment%3B%20filename%3Dschemaspy-6.1.0.jar&response-content-type=application%2Foctet-stream
Auflösen des Hostnamens github-releases.githubusercontent.com (github-releases.githubusercontent.com) … 185.199.111.154, 185.199.109.154, 185.199.108.154, ...
Verbindungsaufbau zu github-releases.githubusercontent.com (github-releases.githubusercontent.com)|185.199.111.154|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 14122568 (13M) [application/octet-stream]
Wird in »schemaspy-6.1.0.jar« gespeichert.

schemaspy-6.1.0.jar                         100%[=========================================================================================>]  13,47M  11,3MB/s    in 1,2s    

2021-07-24 18:47:05 (11,3 MB/s) - »schemaspy-6.1.0.jar« gespeichert [14122568/14122568]
 /projects/SchemaSpy ls -altr 
insgesamt 13800
-rw-r--r--  1 root root 14122568 Sep 17  2019 schemaspy-6.1.0.jar
drwxr-xr-x 35 root root     4096 Jul 24 18:46 ..
drwxr-xr-x  2 root root     4096 Jul 24 18:47 .

Auf dem Rechner ist Ubuntu 18.04 und OpenJDK 11.0.10 installiert

java --version
openjdk 11.0.10 2021-01-19
OpenJDK Runtime Environment (build 11.0.10+9-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.10+9-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)

Da Ich SchemaSpy mit einer MySQL Datenbank teste, muss ich noch den MySQL Connector/J herunterladen, der aktuell in der Version 8.0.26 im Central Repository unter https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.26/mysql-connector-java-8.0.26.jar zu finden ist.

Configuration

Alle Konfigurationsparameter können in der Befehlszeile oder über eine Konfigurationsdatei festgelegt werden. SchemaSpy findet die Konfigurationsdatei in <current-dir>/schemaspy.properties. Eine alternative Konfigurationsdatei kann mit dem Parameter java -jar schemaspy.jar -configFile path/to/config.file angegeben werden.

Eine typische Konfigurationsdatei sieht dann z.B. wie folgt aus:

# https://schemaspy.readthedocs.io/en/latest/started.html
# type of database. Run with -dbhelp for details
schemaspy.t=mssql
# optional path to alternative jdbc drivers.
schemaspy.dp=path/to/drivers
# database properties: host, port number, name user, password
schemaspy.host=server
schemaspy.port=1433
schemaspy.db=db_name
schemaspy.u=database_user
schemaspy.p=database_password
# output dir to save generated files
schemaspy.o=output
# db scheme for which generate diagrams
schemaspy.s=dbo

Nach der Konfiguration kann SchemaSpy dann aufgerufen werden und erzeugt dann bei Erfolg die folgenden Ausgaben:

 /projects/SchemaSpy java -jar schemaspy-6.1.0.jar 
  ____       _                          ____
 / ___|  ___| |__   ___ _ __ ___   __ _/ ___| _ __  _   _
 \___ \ / __| '_ \ / _ \ '_ ` _ \ / _` \___ \| '_ \| | | |
  ___) | (__| | | |  __/ | | | | | (_| |___) | |_) | |_| |
 |____/ \___|_| |_|\___|_| |_| |_|\__,_|____/| .__/ \__, |
                                             |_|    |___/

                                              6.1.0

SchemaSpy generates an HTML representation of a database schema's relationships.
SchemaSpy comes with ABSOLUTELY NO WARRANTY.
SchemaSpy is free software and can be redistributed under the conditions of LGPL version 3 or later.
http://www.gnu.org/licenses/

INFO  - Starting Main v6.1.0 on Ubuntu-1804-bionic-64-minimal with PID 685 (/projects/SchemaSpy/schemaspy-6.1.0.jar started by root in /projects/SchemaSpy)
INFO  - The following profiles are active: default
INFO  - Found configuration file: schemaspy.properties
INFO  - Started Main in 0.905 seconds (JVM running for 1.209)
INFO  - Loaded configuration from schemaspy.properties
INFO  - Starting schema analysis
INFO  - Connected to MySQL - 5.7.31-0ubuntu0.18.04.1
INFO  - Gathering schema details
Gathering schema details...............(0sec)
Connecting relationships...............(0sec)
Writing/graphing summary.INFO  - Gathered schema details in 0 seconds
INFO  - Writing/graphing summary
INFO  - Graphviz rendered set to ''
........(4sec)
Writing/diagramming detailsINFO  - Completed summary in 4 seconds
INFO  - Writing/diagramming details
............(0sec)
Wrote relationship details of 12 tables/views to directory 'output' in 5 seconds.
View the results by opening output/index.html
INFO  - Wrote table details in 0 seconds
INFO  - Wrote relationship details of 12 tables/views to directory 'output' in 5 seconds.
INFO  - View the results by opening output/index.html

Nach ein paar Sekunden befindet sich dann im output Verzeichnis die Dokumentation des analysierten Datenbank-Schemas. Die Ausgabe für eine WordPress Datenbank sieht dann z.B. wie folgt aus:

SchemaSpy Analysis of jentsch.io
Alle WordPress Tabellen, aber keine Relationen ???

OK, entweder WordPress arbeitet ohne Relationen oder SchemaSpy hat die Relationen nicht extrahiert. Daher versuche ich es einfach noch mal mit einer MSSQL Datenbank bei der ich mir sicher bin, dass es viel (sehr viele) Relationen gibt auf meinem Windows 10 PC.

SchemaSpy generates an HTML representation of a database schema’s relationships.
Relationen einer MSSQL Datenbank (im Browser auf 25% Zoom 🙂 )

Wieder hat alles geklappt. Alle Tabellen Spalten und Relationen sind vorhanden (glaube ich) und wenn ich das nächste mal mit meinen Kollegen an der Datenbank arbeite, werden uns die generierten HTML Seiten sicher sehr dabei helfen, schneller durch die Tabellen zu navigieren.

Android SQLite Datenbank mit SchemaSpy analysieren

Als letztes teste ich noch mal, ob es auch möglich ist, eine SQLite Datenbank, die ich aus einer Android App exportiert habe zu analysieren. Dazu exportiere ich erst mal die SQLite Datenbank Datei mit Android Studio.

SQLite Datenbank Export mit Android Studio

Um SchemaSpy mit einer SQLite Datenbank verbinden zu können ist der entsprechende JDBC Treiber nötig, den ich mir aus dem Central Maven Repository (https://repo1.maven.org/maven2/org/xerial/sqlite-jdbc/3.8.9.1/sqlite-jdbc-3.8.9.1.jar) herunterlade und in das SchemaSpy Verzeichnis kopiere.

Die Konfiguration ist aber ein echtes Problem und ich schaffe es leider nicht, meine nwnorthwind.db mit SchemaSpy zu analysieren. Leider finde ich keine Möglichkeit, dass SchemaSpy den SQLite Treiber läd :-(.

 java -jar schemaspy-6.1.0.jar -debug
  ____       _                          ____
 / ___|  ___| |__   ___ _ __ ___   __ _/ ___| _ __  _   _
 \___ \ / __| '_ \ / _ \ '_ ` _ \ / _` \___ \| '_ \| | | |
  ___) | (__| | | |  __/ | | | | | (_| |___) | |_) | |_| |
 |____/ \___|_| |_|\___|_| |_| |_|\__,_|____/| .__/ \__, |
                                             |_|    |___/

                                              6.1.0

SchemaSpy generates an HTML representation of a database schema's relationships.
SchemaSpy comes with ABSOLUTELY NO WARRANTY.
SchemaSpy is free software and can be redistributed under the conditions of LGPL version 3 or later.
http://www.gnu.org/licenses/

INFO  - Starting Main v6.1.0 on Ubuntu-1804-bionic-64-minimal with PID 10646 (/projects/SchemaSpy/nw/schemaspy-6.1.0.jar started by root in /projects/SchemaSpy/nw)
INFO  - The following profiles are active: default
INFO  - Found configuration file: schemaspy.properties
INFO  - Started Main in 0.8 seconds (JVM running for 1.088)
DEBUG - Debug enabled
INFO  - Loaded configuration from schemaspy.properties
INFO  - Starting schema analysis
DEBUG - Resolving dbType: sqlite ->
        schemaspy-6.1.0.jar!/BOOT-INF/classes!/org/schemaspy/types/sqlite.properties
DEBUG - DbSpecificOption name: 'db' value: 'nwnorthwind.db' description: 'path to database or :memory:'
DEBUG - Unable to find driverClass 'SQLite.JDBCDriver'
WARN  - Connection Failure
org.schemaspy.input.dbms.exceptions.ConnectionFailure: Failed to connect to database URL [jdbc:sqlite:/nwnorthwind.db] Failed to create any of 'SQLite.JDBCDriver' driver from driverPath 'sqlite-jdbc-3.36.0.1.jar' with sibling jars no.
Resulting in classpath:
        file:/projects/SchemaSpy/nw/sqlite-jdbc-3.36.0.1.jar

        at org.schemaspy.input.dbms.DbDriverLoader.getConnection(DbDriverLoader.java:101)
        at org.schemaspy.input.dbms.DbDriverLoader.getConnection(DbDriverLoader.java:75)
        at org.schemaspy.input.dbms.service.SqlService.connect(SqlService.java:70)
        at org.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:220)
        at org.schemaspy.SchemaAnalyzer.analyze(SchemaAnalyzer.java:123)
        at org.schemaspy.cli.SchemaSpyRunner.runAnalyzer(SchemaSpyRunner.java:98)
        at org.schemaspy.cli.SchemaSpyRunner.run(SchemaSpyRunner.java:87)
        at org.schemaspy.Main.main(Main.java:55)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
Caused by: org.schemaspy.input.dbms.exceptions.ConnectionFailure: Failed to create any of 'SQLite.JDBCDriver' driver from driverPath 'sqlite-jdbc-3.36.0.1.jar' with sibling jars no.
Resulting in classpath:
        file:/projects/SchemaSpy/nw/sqlite-jdbc-3.36.0.1.jar

        at org.schemaspy.input.dbms.DbDriverLoader.getDriver(DbDriverLoader.java:147)
        at org.schemaspy.input.dbms.DbDriverLoader.getConnection(DbDriverLoader.java:93)
        ... 15 common frames omitted

UPDATE 🙂

Nach viel herumprobieren und Sourcen lesen habe ich es dann doch noch geschafft. Ich habe eine SQLite Datenbank aus einer Android App mit SchemaSpy analysiert und die Metadaten in einer HTML Dokumentation exportiert. Folgendes Kommando und Konfiguration haben endlich das gewünschte Ergebnis erzeugt.

java -jar schemaspy-6.1.0.jar -debug -cat % -s database

cat schemaspy.properties
schemaspy.t=sqlite-xerial
schemaspy.dp=sqlite-jdbc-3.36.0.1.jar
schemaspy.db=northwind.db
schemaspy.u=michael
schemaspy.o=output
SchemaSpy Datenbank einer Northwind Datenbank

Die komplette HTML Ausgabe habe ich mal unter https://northwind.schemaspy.jentsch.io/ veröffentlicht. Unter der Adresse kann man dann mal durch die Doku navigieren und sich die Tabellen, Spalten, Views, etc. ansehen.

SchemaSpy unterstützte Datenbanken

SchemaSpy unterstützt eine große Anzahl von DBMS. Die verfügbaren Datenbanktypen können mit dem Parameter -dbhelp abgefragt werden. Die Liste der integrierten Typen sieht für Version 6.1 wie folgt aus. Standardmäßig ist ora eingestellt.

$ java -jar schemaspy-6.1.0.jar -dbhelp
  ____       _                          ____
 / ___|  ___| |__   ___ _ __ ___   __ _/ ___| _ __  _   _
 \___ \ / __| '_ \ / _ \ '_ ` _ \ / _` \___ \| '_ \| | | |
  ___) | (__| | | |  __/ | | | | | (_| |___) | |_) | |_| |
 |____/ \___|_| |_|\___|_| |_| |_|\__,_|____/| .__/ \__, |
                                             |_|    |___/

                                              6.1.0

SchemaSpy generates an HTML representation of a database schema's relationships.
SchemaSpy comes with ABSOLUTELY NO WARRANTY.
SchemaSpy is free software and can be redistributed under the conditions of LGPL version 3 or later.
http://www.gnu.org/licenses/

INFO  - Starting Main v6.1.0 on LAPTOP23 with PID 27928 (C:\Tools\SchemaSpy\schemaspy-6.1.0.jar started by jentsch in C:\Tools\SchemaSpy)
INFO  - The following profiles are active: default
INFO  - Found configuration file: schemaspy.properties
INFO  - Started Main in 1.605 seconds (JVM running for 2.605)
INFO  - Built-in database types and their required connection parameters:
INFO  - IBM DB2 with the 'App' Driver (-t db2)
INFO  -    -db                  database name
INFO  - IBM DB2 for i (former as400) driver (-t db2i)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database SID as known on host
INFO  - IBM DB2 with the Type 4 'Net' Driver (-t db2net)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - IBM DB2 for z/OS with the 'App' Driver (-t db2zos)
INFO  -    -db                  database name
INFO  - IBM DB2/zos with the Type 4 'Net' Driver (-t db2zosnet)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - Derby Embedded Server (-t derby)
INFO  -    -db                  path to database
INFO  - Derby Network Server (-t derbynet)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - Firebird (-t firebird)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - Force (-t force)
INFO  - H2 Server (-t h2)
INFO  -    -db                  database name
INFO  - Hive (-t hive)
INFO  -    -host                database host
INFO  -    -port                database port
INFO  -    -db                  database name
INFO  - Hive with keytab support (-t hive-kerberos-driverwrapper)
INFO  -    -host                database host
INFO  -    -port                database port
INFO  -    -db                  database name
INFO  -    -principal                   the principal to use
INFO  - Hive with keytab support configured for service discovery using zookeeper (-t hive-kerberos-driverwrapper-zookeeper)
INFO  -    -host                database host
INFO  -    -port                database port
INFO  -    -db                  database name
INFO  - HSQLDB Server (-t hsqldb)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - Imapla (-t impala)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - InformixSQL (-t informix)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  -    -server              database server
INFO  - Microsoft SQL Server JTDS (-t jtds)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - MariaDB (-t mariadb)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - MaxDB (-t maxdb)
INFO  -    -host                Name of the computer on which the database instance is running
INFO  -    -db                  Name of database instance
INFO  - Microsoft SQL Server (-t mssql)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - jTDS JDBC Driver for Microsoft SQL 2000/2005 Server  (-t mssql-jtds)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - jTDS JDBC Driver for Microsoft SQL 2000/2005 Server  (-t mssql-jtds-instance)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  -    -instance            Named instance to connect to
INFO  - Microsoft SQL Server 2005+ (-t mssql05)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - jTDS JDBC Driver for Microsoft SQL 2000/2005 Server  (-t mssql05-jtds)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - jTDS JDBC Driver for Microsoft SQL 2000/2005 Server  (-t mssql05-jtds-instance)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  -    -instance            Named instance to connect to
INFO  - Microsoft SQL Server 2008+ (-t mssql08)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - jTDS JDBC Driver for Microsoft SQL Server 2008+ (-t mssql08-jtds)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - jTDS JDBC Driver for Microsoft SQL Server 2008+ (-t mssql08-jtds-instance)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  -    -instance            Named instance to connect to
INFO  - MySQL (-t mysql)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - MySQL (-t mysql-socket)
INFO  -    -host                host where database resides with optional port
INFO  -    -db                  database name
INFO  -    -socketFactory               ClassName of socket factory which must be in your classpath
INFO  -    -socket              Path To Socket
INFO  - Netezza (-t netezza)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db
INFO  - Oracle with OCI8 Driver (-t ora)
INFO  -    -db                  database name (from TNSNAMES.ORA)
INFO  - Oracle with Thin Driver (-t orathin)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database SID as known on host
INFO  - Oracle with Thin Driver (-t orathin-service)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database (service) as known on host
INFO  - PostgreSQL (-t pgsql)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - PostgreSQL (-t pgsql11)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - Amazon redshift (-t redshift)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - Snowflake (-t snowflake)
INFO  -    -account             hostname before 'snowflakecomputing.com'
INFO  -    -role                Snowflake user role
INFO  -    -warehouse                   Snowflake warehouse
INFO  -    -db
INFO  - SQLite (-t sqlite)
INFO  -    -db                  path to database or :memory:
INFO  - SQLite (-t sqlite-xerial)
INFO  -    -db                  path to database or :memory:
INFO  - Sybase Server (jdbc3) (-t sybase)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - Sybase Server (jdbc2) (-t sybase2)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - Sybase Server (jdbc4) (-t sybase3)
INFO  -    -host                database server host
INFO  -    -port                database port on host
INFO  -    -db                  database name
INFO  - Teradata (-t teradata)
INFO  -    -db                  database name
INFO  -    -s                   ?????
INFO  -    -port                ?????
INFO  - DB2 UDB Type 4 Driver (-t udbt4)
INFO  -    -host                host of database, may contain port
INFO  -    -port                optional port if not default
INFO  -    -db                  database name
INFO  - You can use your own database types by specifying the filespec of a .properties file with -t.
INFO  - Grab one out of /C:/Tools/SchemaSpy/schemaspy-6.1.0.jar and modify it to suit your needs.

Fazit

SchemaSpy ist ein ein tolles Datenbank Werkzeug zum dokumentieren von Datenbank-Schemata. Ich werde das Tool in Zukunft auf jeden Fall immer auf dem PC haben, wenn ich mit einer Datenbank arbeite und ich würde es auch jederzeit weiterempfehlen.