NAME
SQLite::Archive - Version-agnostic storage and manipulation of SQLite
databases
DESCRIPTION
SQLite (and the Perl module for it DBD::SQLite) is an extremely handy
database for storing various types of simple information.
However, as SQLite has developed, the binary structure of the SQLite
database format itself has changed and evolved, and continues to change
and evolve. As new releases come out, new versions of DBD::SQLite are
also released with matching code.
This makes SQLite database files suboptimal (at best) for use in
distributing data sets between disparate systems.
At the same time, a giant raw .sql script says very little about the
data itself (such as which database and version it is intended for),
requires a client front end to throw the SQL script at, and it not
easily editable or manipulatable while dumped.
SQLite::Archive provides a straight forward mechanism for exporting (and
importing) SQLite databases, and moving that data around as a single
file to (or from) other hosts.
It uses a regular tar archive, with the data stored in CSV files, and
the table structure stored in a create.sql file.
Given a SQLite archive file (SQLite::Archive will take anything
supported by Archive::Extract) it will extract the tarball to a
temporary directory, create a SQLite database (in a location of your
choice or also in a temp directory) and then populate the SQLite
database with the data from the archive.
METHODS
new
SQLite::Archive->new( file => 'data.tar.gz' );
SQLite::Archive->new( file => 'data.zip' );
SQLite::Archive->new( dir => 'extracted' );
The "new" constructor creates a new SQLite archive object.
It takes a data source as either a "file" param (which should be an
Archive::Extract-compatible archive, or a "dir" param (which should
contain the equivalent of the content of the archive, but already
expanded as single files).
Returns a new SQLite::Archive object, or throws an exception on error.
create_db
$dbh = $archive->create_db; # Temp file created
$dbh = $archive->create_db( 'dir/sqlite.db' );
The "create_db" method create a new (empty) SQLite database.
It optionally takes a single param of a path at which it should create
the SQLite file.
If created as a temp file, the database file will be destroyed until
END-time (as opposed to being destroyed when the DBI connection handle
goes out of scope).
Returns a DBI connection (as a DBI::db object) or throws an exception on
error.
build_db
$dbh = $archive->build_db; # Temp file created
$dbh = $archive->build_db( 'dir/sqlite.db' );
The "build_db" method provides the main functionality for
SQLite::Archive.
It creates a new SQLite database (at a temporary file if needed),
executes any SQL scripts, populates tables from any CSV files, and
returns a DBI handle.
Returns a BDI::db object, or throws an exception on error.
SUPPORT
No support is available for this module
AUTHOR
Adam Kennedy <
[email protected]>
SEE ALSO
SQLite::Temp
COPYRIGHT
Copyright 2007 Adam Kennedy.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included
with this module.