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 statementsIf
sql
is a reference to a glob or a filehandle, the SQL will be read from that. not implementedIf
sql
is undefined, the$::DATA
or the0
filehandle will be read until exhaustion. not implementedThis 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 DBdbh
- a premade database handle to be used instead ofdsn
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
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.