Revert my previous changes (rev 1722 reverted back to rev 1721)
[dbsrgits/SQL-Translator.git] / script / sqlt-dumper
CommitLineData
969049ba 1#!/usr/bin/env perl
354b1807 2
44659089 3# -------------------------------------------------------------------
4# Copyright (C) 2002-2009 SQLFairy Authors
5#
6# This program is free software; you can redistribute it and/or
7# modify it under the terms of the GNU General Public License as
8# published by the Free Software Foundation; version 2.
9#
10# This program is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# You should have received a copy of the GNU General Public License
16# along with this program; if not, write to the Free Software
17# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18# 02111-1307 USA
19# -------------------------------------------------------------------
20
354b1807 21=head1 NAME
22
23sqlt-dumper - create a dumper script from a schema
24
25=head1 SYNOPSIS
26
27 sqlt-dumper -d Oracle [options] schema.sql > dumper.pl
28
29 ./dumper.pl > data.sql
30
31 Options:
32
5a3f5c82 33 -h|--help Show help and exit
34 --skip=t1[,t2] Skip tables in comma-separated list
35 --skiplike=regex Skip tables matching the regular expression
36 -u|--user Database username
37 -p|--password Database password
38 --dsn DSN for DBI
354b1807 39
40=head1 DESCRIPTION
41
42This script uses SQL::Translator to parse the SQL schema and create a
43Perl script that can connect to the database and dump the data as
5a3f5c82 44INSERT statements (a la mysqldump) or MySQL's LOAD FILE syntax. You may
45specify tables to "skip" (also using a "skiplike" regular expression)
46and the generated dumper script will not have those tables. However,
47these will also be options in the generated dumper, so you can wait to
48specify these options when you dump your database. The database
49username, password, and DSN can be hardcoded into the generated
50script, or part of the DSN can be intuited from the "database"
51argument.
354b1807 52
53=cut
54
55# -------------------------------------------------------------------
56
57use strict;
969049ba 58use warnings;
354b1807 59use Pod::Usage;
60use Getopt::Long;
61use SQL::Translator;
aba9fea4 62use File::Basename qw(basename);
354b1807 63
da06ac74 64use vars '$VERSION';
11ad2df9 65$VERSION = '1.59';
da06ac74 66
5a3f5c82 67my ( $help, $db, $skip, $skiplike, $db_user, $db_pass, $dsn );
354b1807 68GetOptions(
69 'h|help' => \$help,
70 'd|f|from|db=s' => \$db,
354b1807 71 'skip:s' => \$skip,
5a3f5c82 72 'skiplike:s' => \$skiplike,
354b1807 73 'u|user:s' => \$db_user,
74 'p|password:s' => \$db_pass,
75 'dsn:s' => \$dsn,
76) or pod2usage;
77
78pod2usage(0) if $help;
79pod2usage( 'No database driver specified' ) unless $db;
80$db_user ||= 'username';
81$db_pass ||= 'password';
82$dsn ||= "dbi:$db:_";
83
5a3f5c82 84my $file = shift @ARGV or pod2usage( -msg => 'No input file' );
85my $t = SQL::Translator->new(
86 from => $db,
87 to => 'Dumper',
88 producer_args => {
89 skip => $skip,
90 skiplike => $skiplike,
91 db_user => $db_user,
92 db_password => $db_pass,
93 dsn => $dsn,
354b1807 94 }
5a3f5c82 95);
354b1807 96
5a3f5c82 97print $t->translate( $file );
354b1807 98
354b1807 99exit(0);
100
101# -------------------------------------------------------------------
102
103=pod
104
105=head1 AUTHOR
106
969049ba 107Ken Youens-Clark E<lt>kclark@cpan.orgE<gt>.
354b1807 108
109=head1 SEE ALSO
110
5a3f5c82 111perl, SQL::Translator, SQL::Translator::Producer::Dumper.
354b1807 112
113=cut