SchemaCrawler Example

# SchemaCrawler - Diagram Example

## Description

The diagram example demonstrates the integration of SchemaCrawler with Graphviz.

## How to Run

1. Make sure that java is on your PATH
2. Start a command shell in the `_downloader` directory
3. Run `download.cmd javascript` (or `download.sh javascript` on Unix) to install the JavaScript support package required for `graphviz-java`
4. Run `download.cmd graphviz-java` (or `download.sh graphviz-java` on Unix) to install the `graphviz-java` package
5. The `graphviz-java` package only supports PNG and SVG output. For other types of output, install Graphviz.

### Run With SQLite Database

1. Start a command shell in the diagram example directory
2. Run `sqlite_diagram.cmd ..\..\_testdb\sc.db sc.pdf` (or `sqlite_diagram.sh ../../_testdb/sc.db sc.pdf` on Unix)

### Run With HyperSQL Database

1. Start the test database server by following instructions in the `_testdb/README.html` file
2. Start a command shell in the diagram example directory
3. Run `diagram.cmd database-diagram.png` (or `diagram.sh database-diagram.png` on Unix)

## How to Experiment

1. Try other output formats like PDF by changing the extension of the output file
2. Try using grep options to include certain tables. For example, try using a command-line option of `--grep-columns=.*\\.AUTHOR.*`
3. Try controlling display of foreign-key names, column ordinal numbers, and schema names by setting the following properties in the SchemaCrawler configuration file, `config/schemacrawler.config.properties`.

    schemacrawler.format.show_ordinal_numbers=true
    schemacrawler.format.hide_foreignkey_names=true
    schemacrawler.format.hide_weakassociation_names=true
    schemacrawler.format.show_unqualified_names=true

1. Try using Graphviz command-line options by setting the following property in the SchemaCrawler configuration file, `config/schemacrawler.config.properties`.

    schemacrawler.graph.graphviz_opts=-Gdpi=300

## SchemaCrawler Web Application

Take a look at the SchemaCrawler Web Application.