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
  `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

  `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.

