The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

DBIx::RunSQL - run SQL to create a database schema

SYNOPSIS

#!/usr/bin/perl -w
use strict;
use lib 'lib';
use DBIx::RunSQL;

my $test_dbh = DBIx::RunSQL->create(
    dsn     => 'dbi:SQLite:dbfile=:memory:',
    sql     => 'sql/setup.sql',
    verbose => 1,
);


... # run your tests with a DB setup fresh from setup.sql

METHODS

C<< DBIx::RunSQL->create ARGS >>

Creates the database and returns the database handle

sql - name of the file containing the SQL statements

If sql is a reference to a glob or a filehandle, the SQL will be read from that. not implemented

If sql is undefined, the $::DATA or the 0 filehandle will be read until exhaustion. not implemented

This allows to create SQL-as-programs as follows:

#!/usr/bin/perl -w -MDBIx::RunSQL=create create table ...

dsn, user, password - DBI parameters for connecting to the DB

dbh - a premade database handle to be used instead of dsn

verbose - print each SQL statement as it is run

PROGRAMMER USAGE

This module abstracts away the "run these SQL statements to set up your database" into a module. In some situations you want to give the setup SQL to a database admin, but in other situations, for example testing, you want to run the SQL statements against an in-memory database. This module abstracts away the reading of SQL from a file and allows for various command line parameters to be passed in. A skeleton create-db.sql looks like this:

#!/usr/bin/perl -w
use strict;
use lib 'lib';
use DBIx::RunSQL;

DBIx::RunSQL->handle_command_line('myapp');

=head1 NAME

create-db.pl - Create the database

=head1 ABSTRACT

This sets up the database. The following
options are recognized:

=over 4

=item C<--user> USERNAME

=item C<--password> PASSWORD

=item C<--dsn> DSN

The DBI DSN to use for connecting to
the database

=item C<--sql> SQLFILE

The alternative SQL file to use
instead of C<sql/create.sql>.

=item C<--help>

Show this message.

=cut

C<< DBIx::RunSQL->handle_command_line >>

Parses the command line. This is a convenience method, which passes the following command line arguments to ->create:

--user --password --dsn --sql --verbose

In addition, it handles the following switches through Pod::Usage:

--help --man

See also the section PROGRAMMER USAGE for a sample program to set up a database from an SQL file.

NOTES

If you find yourself wanting to write SELECT statements, consider looking at Querylet instead, which is geared towards that and even has an interface for Excel or HTML output.

If you find yourself wanting to write parametrized queries as .sql files, consider looking at Data::Phrasebook::SQL or potentially DBIx::SQLHandler.

SEE ALSO

ORLite::Migrate

AUTHOR

Max Maischein corion@cpan.org

COPYRIGHT (c)

Copyright 2009-2010 by Max Maischein corion@cpan.org.

LICENSE

This module is released under the same terms as Perl itself.