DBIx::DBSchema - Database-independent schema objects |
DBIx::DBSchema - Database-independent schema objects
use DBIx::DBSchema;
$schema = new DBIx::DBSchema @dbix_dbschema_table_objects; $schema = new_odbc DBIx::DBSchema $dbh; $schema = new_odbc DBIx::DBSchema $dsn, $user, $pass; $schema = new_native DBIx::DBSchema $dbh; $schema = new_native DBIx::DBSchema $dsn, $user, $pass;
$schema->save("filename"); $schema = load DBIx::DBSchema "filename";
$schema->addtable($dbix_dbschema_table_object);
@table_names = $schema->tables;
$DBIx_DBSchema_table_object = $schema->table("table_name");
@sql = $schema->sql($dbh); @sql = $schema->sql($dsn, $username, $password); @sql = $schema->sql($dsn); #doesn't connect to database - less reliable
$perl_code = $schema->pretty_print; %hash = eval $perl_code; use DBI qw(:sql_types); $schema = pretty_read DBIx::DBSchema \%hash;
DBIx::DBSchema objects are collections of DBIx::DBSchema::Table objects and represent a database schema.
This module implements an OO-interface to database schemas. Using this module, you can create a database schema with an OO Perl interface. You can read the schema from an existing database. You can save the schema to disk and restore it a different process. Most importantly, DBIx::DBSchema can write SQL CREATE statements statements for different databases from a single source.
Currently supported databases are MySQL and PostgreSQL. Sybase support is partially implemented. DBIx::DBSchema will attempt to use generic SQL syntax for other databases. Assistance adding support for other databases is welcomed. See the DBIx::DBSchema::DBD manpage, ``Driver Writer's Guide and Base Class''.
The data source can be specified by passing an open DBI database handle, or by passing the DBI data source name, username and password.
Although the username and password are optional, it is best to call this method with a database handle or data source including a valid username and password - a DBI connection will be opened and the quoting and type mapping will be more reliable.
If passed a DBI data source (or handle) such as `DBI:mysql:database' or `DBI:Pg:dbname=database', will use syntax specific to that database engine. Currently supported databases are MySQL and PostgreSQL.
If not passed a data source (or handle), or if there is no driver for the specified database, will attempt to use generic SQL syntax.
Ivan Kohler <ivan-dbix-dbschema@420.am>
Charles Shapiro <charles.shapiro@numethods.com> and Mitchell Friedman <mitchell.friedman@numethods.com> contributed the start of a Sybase driver.
Copyright (c) 2000 Ivan Kohler Copyright (c) 2000 Mail Abuse Prevention System LLC All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Each DBIx::DBSchema object should have a name which corresponds to its name within the SQL database engine (DBI data source).
pretty_print is actually pretty ugly.
Perhaps pretty_read should eval column types so that we can use DBI
qw(:sql_types)
here instead of externally.
the DBIx::DBSchema::Table manpage, the DBIx::DBSchema::ColGroup manpage, the DBIx::DBSchema::ColGroup::Unique manpage, the DBIx::DBSchema::ColGroup::Index manpage, the DBIx::DBSchema::Column manpage, the DBIx::DBSchema::DBD manpage, the DBIx::DBSchema::DBD::mysql manpage, the DBIx::DBSchema::DBD::Pg manpage, the FS::Record manpage, the DBI manpage
DBIx::DBSchema - Database-independent schema objects |