forked from Corion/DBIx--RunSQL
-
Notifications
You must be signed in to change notification settings - Fork 1
/
README
172 lines (116 loc) · 4.76 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
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:dbname=:memory:',
sql => 'sql/setup.sql',
force => 1,
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'
* `force' - continue even if errors are encountered
* `verbose' - print each SQL statement as it is run
* `verbose_handler' - callback to call with each SQL statement instead
of `print'
* `verbose_fh' - filehandle to write to instead of `STDOUT'
`DBIx::RunSQL->run_sql_file ARGS'
my $dbh = DBI->connect(...)
for my $file (sort glob '*.sql') {
DBIx::RunSQL->run_sql_file(
verbose => 1,
dbh => $dbh,
sql => $file,
);
};
Runs an SQL file on a prepared database handle.
* `dbh' - a premade database handle
* `sql' - name of the file containing the SQL statements
* `force' - continue even if errors are encountered
* `verbose' - print each SQL statement as it is run
* `verbose_handler' - callback to call with each SQL statement instead
of `print'
* `verbose_fh' - filehandle to write to instead of `STDOUT'
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
REPOSITORY
The public repository of this module is
http://github.com/Corion/DBIx--RunSQL.
SUPPORT
The public support forum of this module is http://perlmonks.org/.
BUG TRACKER
Please report bugs in this module via the RT CPAN bug queue at
https://rt.cpan.org/Public/Dist/Display.html?Name=DBIx-RunSQL or via
mail to dbix-runsql-Bugs@rt.cpan.org.
AUTHOR
Max Maischein `corion@cpan.org'
COPYRIGHT (c)
Copyright 2009-2011 by Max Maischein `corion@cpan.org'.
LICENSE
This module is released under the same terms as Perl itself.