NAME¶
SQL::Translator::Parser::DBI - "parser" for DBI handles
SYNOPSIS¶
use DBI;
use SQL::Translator;
my $dbh = DBI->connect('dsn', 'user', 'pass',
{
RaiseError => 1,
FetchHashKeyName => 'NAME_lc',
}
);
my $translator = SQL::Translator->new(
parser => 'DBI',
dbh => $dbh,
);
Or:
use SQL::Translator;
my $translator = SQL::Translator->new(
parser => 'DBI',
parser_args => {
dsn => 'dbi:mysql:FOO',
db_user => 'guest',
db_password => 'password',
}
);
DESCRIPTION¶
This parser accepts an open database handle (or the arguments to create one) and
queries the database directly for the information.
The following are acceptable arguments:
- •
- dbh
An open DBI database handle. NB: Be sure to create the database with the
"FetchHashKeyName => 'NAME_lc'" option as all the DBI parsers
expect lowercased column names.
- •
- dsn
The DSN to use for connecting to a database.
- •
- db_user
The user name to use for connecting to a database.
- •
- db_password
The password to use for connecting to a database.
There is no need to specify which type of database you are querying as this is
determined automatically by inspecting $dbh->{'Driver'}{'Name'}. If a
parser exists for your database, it will be used automatically; if not, the
code will fail automatically (and you can write the parser and contribute it
to the project!).
Currently parsers exist for the following databases:
- •
- MySQL
- •
- SQLite
- •
- Sybase
- •
- PostgreSQL (still experimental)
Most of these parsers are able to query the database directly for the structure
rather than parsing a text file. For large schemas, this is probably orders of
magnitude faster than traditional parsing (which uses Parse::RecDescent, an
amazing module but really quite slow).
Though no Oracle parser currently exists, it would be fairly easy to query an
Oracle database directly by using DDL::Oracle to generate a DDL for the schema
and then using the normal Oracle parser on this. Perhaps future versions of
SQL::Translator will include the ability to query Oracle directly and skip the
parsing of a text file, too.
AUTHOR¶
Ken Y. Clark <kclark@cpan.org>.
SEE ALSO¶
DBI, SQL::Translator.