---
name: "Parse::Dia::SQL"
section: "3pm"
platform: "linux"
package: "libparse-dia-sql-perl"
version: "0.31-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Parse::Dia::SQL"
---

# Parse::Dia::SQL(3pm)

Convert Dia class diagrams into SQL.

## NAME

Parse::Dia::SQL - Convert Dia class diagrams into SQL.

## SYNOPSIS

```
    use Parse::Dia::SQL;
    my $dia = Parse::Dia::SQL->new(
      file => 't/data/TestERD.dia',
      db   => 'db2'
    );
    print $dia->get_sql();
    # or command-line version
    perl parsediasql --file t/data/TestERD.dia --db db2
```

## DESCRIPTION

Dia is a diagram creation program for Linux, Unix and Windows released under the *GNU General Public License*.

Parse::Dia::SQL converts Dia class diagrams into SQL.

Parse::Dia::SQL is the parser that interprets the .dia file(s) into an internal datastructure.

Parse::Dia::SQL::Output (or one of its sub classes) can take the datastructure and generate the SQL statements it represents.

## MODELLING HOWTO

See \<http://tedia2sql.tigris.org/usingtedia2sql.html\>

### Modelling differences from tedia2sql

- •

  Index options are supported.  Text is taken from the *comments* field of the *operation*, i.e. the index.  A database specific default value is used if the *comments* field is left blank.  Consult the Output sub class' constructor.

- •

  Type mapping is supported. A type mapping is a user-defined column name replacement. Unlike *tedia2sql* the type mapping is non-recursive.  Consult `"t/data/typemap.dia"` for an example.

- •

  Preliminary support for Dia's *database* shapes is added.

- •

  Table comments are used as *table postfix options*.  This means per-table options (e.g. partitioning options) are supported on a per-database level.

- •

  *backticks* notation is supported for MySQL-InnoDB.

## DIA VERSIONS

Parse::Dia::SQL has been tested with Dia versions 0.93 - 0.97.

Parse::Dia::SQL uses the XML `"version"` tag information in the *.dia* input file to determine how each XML construct is formatted.  Future versions of Dia may change the internal format, and XML `"version"` tag is used to detect such changes.

## DATABASE SUPPORT

The following databases are supported:

- DB2

  - Informix

  - Ingres

  - Oracle

  - Postgres

  - Sas

  - SQLite3

  - SQLite3fk (with foreign key support)

  - Sybase

  - MySQL InnoDB

  - MySQL MyISAM

  Adding support for additional databases means to create a subclass of Parse::Dia::SQL::Output.

Patches are welcome.

## AUTHOR

Parse::Dia::SQL is based on *tedia2sql* by Tim Ellis and others.  See the *AUTHORS* file for details.

Modified by Andreas Faafeng, `"<aff at cpan.org>"` for release on CPAN.

## BUGS

Please report any bugs or feature requests to `"bug-parse-dia-sql at` `rt.cpan.org"`, or through the web interface at \<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Parse-Dia-SQL\>.  I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

## SUPPORT

You can find documentation for this module with the perldoc command.

```
    perldoc Parse::Dia::SQL
```

You can also look for information at:

- •

  Project home

  Documentation and public source code repository:

  \<http://tedia2sql.tigris.org/\>

- •

  RT: CPAN's request tracker

  \<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Parse-Dia-SQL\>

- •

  AnnoCPAN: Annotated CPAN documentation

  \<http://annocpan.org/dist/Parse-Dia-SQL\>

- •

  CPAN Ratings

  \<http://cpanratings.perl.org/d/Parse-Dia-SQL\>

- •

  Search CPAN

  \<http://search.cpan.org/dist/Parse-Dia-SQL\>

## SEE ALSO

- •

  \<http://tedia2sql.tigris.org/\>

- •

  \<http://live.gnome.org/Dia\>

## ACKNOWLEDGEMENTS

See the AUTHORS file.

## LICENSE

This program is released under the GNU General Public License.

## TERMINOLOGY

By *database* we mean relational database management system (RDBMS).

## METHODS

- **new()**

  The constructor.  Mandatory arguments:

  ```
    file  - The .dia file to parse
    db    - The target database type
  ```

  Dies if target database is unknown or unsupported.

- **get\_sql()**

  Return sql for given db.  Calls underlying methods that performs parsing and sql generation.
