X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=script%2Fsqlt-diagram;h=8c70373dadd41ee839941991c52a7d6bd6fd596b;hb=6440741a562ff8bb42c79282d30f3562c4336578;hp=7af13f82d085ee528fd4f3a9cca7f24bd2411cf0;hpb=11ad2df91bcc0674faa8fb5b6bab52c9e4a73762;p=dbsrgits%2FSQL-Translator.git diff --git a/script/sqlt-diagram b/script/sqlt-diagram index 7af13f8..8c70373 100755 --- a/script/sqlt-diagram +++ b/script/sqlt-diagram @@ -1,7 +1,7 @@ #!/usr/bin/env perl # ------------------------------------------------------------------- -# Copyright (C) 2002-2009 SQLFairy Authors +# Copyright (C) 2002-2011 SQLFairy Authors # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as @@ -14,11 +14,11 @@ # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -# 02111-1307 USA +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +# 02110-1301 USA. # ------------------------------------------------------------------- -=head1 NAME +=head1 NAME sqlt-diagram - Automatically create a diagram from a database schema @@ -37,12 +37,14 @@ sqlt-diagram - Automatically create a diagram from a database schema default "medium") --gutter Gutter size between tables --color Add colors - --show-fk-only Only show fields that act as primary + --show-fk-only Only show fields that act as primary or foreign keys --natural-join Perform natural joins --natural-join-pk Perform natural joins from primary keys only -s|--skip Fields to skip in natural joins + --skip-tables Comma-separated list of table names to exclude + --skip-tables-like Comma-separated list of regexen to exclude tables --debug Print debugging information =head1 DESCRIPTION @@ -61,7 +63,7 @@ This can prove too permissive, however, as you probably don't want a field called "name" to be considered a foreign key, so you could include it in the "skip" option, and all fields called "name" will be excluded from natural joins. A more efficient method, however, might -be to simply deduce the foriegn keys from primary keys to other fields +be to simply deduce the foreign keys from primary keys to other fields named the same in other tables. Use the "natural-join-pk" option to achieve this. @@ -80,28 +82,31 @@ $VERSION = '1.59'; # # Get arguments. # -my ( - $out_file, $image_type, $db_driver, $title, $no_columns, +my ( + $out_file, $output_type, $db_driver, $title, $num_columns, $no_lines, $font_size, $add_color, $debug, $show_fk_only, - $gutter, $natural_join, $join_pk_only, $skip_fields, $help + $gutter, $natural_join, $join_pk_only, $skip_fields, + $skip_tables, $skip_tables_like, $help ); GetOptions( - 'd|db|f|from=s' => \$db_driver, - 'o|output:s' => \$out_file, - 'i|image:s' => \$image_type, - 't|title:s' => \$title, - 'c|columns:i' => \$no_columns, - 'n|no-lines' => \$no_lines, - 'font-size:s' => \$font_size, - 'gutter:i' => \$gutter, - 'color' => \$add_color, - 'show-fk-only' => \$show_fk_only, - 'natural-join' => \$natural_join, - 'natural-join-pk' => \$join_pk_only, - 's|skip:s' => \$skip_fields, - 'debug' => \$debug, - 'h|help' => \$help, + 'd|db|f|from=s' => \$db_driver, + 'o|output:s' => \$out_file, + 'i|image:s' => \$output_type, + 't|title:s' => \$title, + 'c|columns:i' => \$num_columns, + 'n|no-lines' => \$no_lines, + 'font-size:s' => \$font_size, + 'gutter:i' => \$gutter, + 'color' => \$add_color, + 'show-fk-only' => \$show_fk_only, + 'natural-join' => \$natural_join, + 'natural-join-pk' => \$join_pk_only, + 's|skip:s' => \$skip_fields, + 'skip-tables:s' => \$skip_tables, + 'skip-tables-like:s' => \$skip_tables_like, + 'debug' => \$debug, + 'h|help' => \$help, ) or die pod2usage; my @files = @ARGV; # the create script(s) for the original db @@ -109,26 +114,30 @@ pod2usage(1) if $help; pod2usage( -message => "No db driver specified" ) unless $db_driver; pod2usage( -message => 'No input file' ) unless @files; -my $translator = SQL::Translator->new( +my $translator = SQL::Translator->new( from => $db_driver, to => 'Diagram', debug => $debug || 0, producer_args => { - out_file => $out_file, - image_type => $image_type, - gutter => $gutter || 0, - title => $title, - no_columns => $no_columns, - no_lines => $no_lines, - font_size => $font_size, - add_color => $add_color, - show_fk_only => $show_fk_only, - natural_join => $natural_join, - join_pk_only => $join_pk_only, - skip_fields => $skip_fields, + out_file => $out_file, + output_type => $output_type, + gutter => $gutter || 0, + title => $title, + num_columns => $num_columns, + no_lines => $no_lines, + font_size => $font_size, + add_color => $add_color, + show_fk_only => $show_fk_only, + natural_join => $natural_join, + join_pk_only => $join_pk_only, + skip_fields => $skip_fields, + skip_tables => $skip_tables, + skip_tables_like => $skip_tables_like, }, ) or die SQL::Translator->error; +binmode STDOUT unless $out_file; + for my $file (@files) { my $output = $translator->translate( $file ) or die "Error: " . $translator->error;