Data::Record::Serialize::Encode::dbi

Data::Record::Serialize::Encode::dbi writes a record to a database using
DBI.

It performs both the Data::Record::Serialize::Role::Encode and
Data::Record::Serialize::Role::Sink roles.

You cannot construct this directly. You must use "new" in
Data::Record::Serialize.

  Types

Field types are recognized and converted to SQL types via the following
map:

  S => 'text'
  N => 'real'
  I => 'integer'

For Postgres, "B => 'boolean'". For other databases, "B => 'integer'".
This encoder handles transformation of the input "truthy" Boolean value
into a form appropriate for the database to ingest.

  NULL values

By default numeric fields are set to "NULL" if they are empty. This can
be changed by setting the "nullify" attribute.

  Performance

Records are by default written to the database in batches (see the
"batch" attribute) to improve performance. Each batch is performed as a
single transaction. If there is an error during the transaction, record
insertions during the transaction are *not* rolled back.

  Errors

Transaction errors result in an exception in the
"Data::Record::Serialize::Error::Encode::dbi::insert" class. See
Data::Record::Serialize::Error for more information on exception
objects.

  Compatibility

This module has been tested on SQLite, PostgreSQL, and Sybase. See
t/encoders/dbi.t for more information on how to test against non-SQLite
databases.

SQL::Translator is used to generate the DDL; unfortunately its Sybase
DDL producer has some issues/bugs and is temporarily monkey-patched to
work around them.

INSTALLATION

This is a Perl module distribution. It should be installed with whichever
tool you use to manage your installation of Perl, e.g. any of

  cpanm .
  cpan  .
  cpanp -i .

Consult http://www.cpan.org/modules/INSTALL.html for further instruction.
Should you wish to install this module manually, the procedure is

  perl Build.PL
  ./Build
  ./Build test
  ./Build install

COPYRIGHT AND LICENSE

This software is Copyright (c) 2017 by Smithsonian Astrophysical
Observatory.

This is free software, licensed under:

  The GNU General Public License, Version 3, June 2007
