FabForce::DBDesigner4 - Parse/Analyse XML-Files created by DBDesigner 4 (FabForce)
use FabForce::DBDesigner4; my $designer = FabForce::DBDesigner4->new(); $designer->parsefile(xml => 'KESS.xml'); $designer->writeXML('text_xml.xml'); $designer->writeSQL('text_sql.sql');
FabForce::DBDesigner4 is a module to analyse xml-files created by the Database-Design tool DBDesigner (Version 4) from FabForce (http://www.fabforce.net).
You can also parse simple .sql-files to get the table structures off CREATE-statements.
# create a new instance my $designer = FabForce::DBDesigner4->new();
parse the input file (either SQL or XML (FabForce-format))
# parse a xml-file $designer->parsefile(xml => 'KESS.xml'); # parse a sql-file $designer->parsefile(sql => 'database.sql');
prints the structure into a xml-file (FabForce-format)
$designer->writeXML('foo.xml');
print the structure into a sql-file
$designer->writeSQL('foo.sql');
returns an array of table-objects
my @tables = $designer->getTables();
returns an array of CREATE statements. One element for each table.
my @creates = $designer->getSQL();
Each table is an object which contains information about the columns, the relations and the keys.
Methods of the table-objects
# set the tablename $table->name('tablename'); # get the tablename my $name = $table->name();
# set the tablecolumns my @array = ({'column1' => ['int','not null']}); $table->columns(\@array); # get the columns print $_,"\n" for($table->columns());
# get datatype of n-th column (i.e. 3rd column) my $datatype = $table->columnType(3);
# get info about n-th column (i.e. 4th column) print Dumper($table->columnInfo(4));
# maps column information to hash (needed for columns()) my @columns = ('col1 varchar(255) primary key', 'col2 int not null'); my @array = $table->stringsToTableCols(@columns);
# add the tablecolumn my $column = ['column1','int','not null']; $table->addColumn($column);
# set relations my @relations = ([1,'startTable.startCol','targetTable.targetCol']); $table->relations(\@relations); # get relations print $_,"\n" for($table->relations());
$table->addRelation([1,'startTable.startCol','targetTable.targetCol']);
# removes a relation (i.e. 2nd relation) $table->removeRelation(2);
# set the primary key $table->key(['prim1']); # get the primary key print "the primary key contains these columns:\n"; print $_,"\n" for($table->key());
This module requires XML::Twig, XML::Writer and IO::File
This module is still in development so feel free to contact me and send me bugreports or comments on this module.
XML::Twig XML::Writer IO::File
Renee Baecker, <module@renee-baecker.de>
Copyright (C) 2005 by Renee Baecker
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.6.1 or, at your option, any later version of Perl 5 you may have available.
To install FabForce::DBDesigner4, copy and paste the appropriate command in to your terminal.
cpanm
cpanm FabForce::DBDesigner4
CPAN shell
perl -MCPAN -e shell install FabForce::DBDesigner4
For more information on module installation, please visit the detailed CPAN module installation guide.