DBIx::RunSQL - run SQL to create a database schema
#!/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
Creates the database and returns the database handle
sql - name of the file containing the SQL statements
sql is a reference to a glob or a filehandle,
the SQL will be read from that. not implemented
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 ...
password - DBI parameters for connecting to the DB
dbh - a premade database handle to be used instead of
verbose - print each SQL statement as it is run
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
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
Parses the command line. This is a convenience method, which
passes the following command line arguments to
--user --password --dsn --sql --verbose
In addition, it handles the following switches through Pod::Usage:
See also the section PROGRAMMER USAGE for a sample program to set up a database from an SQL file.
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.
Copyright 2009-2010 by Max Maischein
This module is released under the same terms as Perl itself.