NAME
DBIx::BulkLoader::Mysql - Perl extension for mysql bulk loading
SYNOPSIS
use DBIx::BulkLoader::Mysql;
# non repeating portion of the insert statement
my $insert='insert into bulk_insert (col_a,col_b,col_c) values ';
# repeating portion of the insert statement
my $placeholders='(?,?,?)';
# how many rows to buffer until insert is called
my $bulk_insert_count=5;
# db connection
my $dbh=DBI->connect(db connection info here);
my $placeholder_count=3;
my ($bulk,$error)=DBIx::BulkLoader::Mysql->new(
dbh=>$dbh
,sql_insert=>$insert
,placeholders=>$placeholders
);
die $error unless $bulk;
for( 1 .. 50 ) {
$bulk->insert(qw(a b c));
}
# inserted 50 rows at once
$bulk->insert(qw(l l x));
# inserted 0 rows
$bulk->insert(qw(l l x));
# inserted 0 rows
$bulk->flush;
# inserted 2 rows 1 at a time
DESCRIPTION
Simple buffering bulk loader interface for mysql.
EXPORT
None.
OO Methods
This section covers the OO methods for this package.
my ($bulk,$error)=DBIx::BulkLoader::Mysql->new(%hash);
Package constructor.
$bulk is undef on error $error explains why $bulk is undef
Constructor options
dbh=>$dbh Sets the DBH object sql_insert=>$insert Contains the body of the sql statement minus the placeholder segment. placeholders=>$placeholders Placeholder segment of the sql statement placeholder_count=>3 Optional argument If you get strange insert counts or dbi bails set this option manually bulk_insert_count=>50 Optional argument Sets the number of rows to buffer for insert. prepare_args=>{} Optional argument Arguments to be passed to $dbh->prepare See DBD::mysql
$bulk->flush;
Empties the placeholder buffer
$bulk->insert($x,$y,$z);
Inserts the placeholder arguments onto the buffer stack. This does not cause an insert, unless the total number of rows is the same as the constructor call "bulk_insert_count=>50".
my $columns=$bulk->get_placeholder_count;
Gets the total number of column placeholders.
my $buffer_size=$bulk->get_buffer_size;
Gets the total size of the array used for insert.
my $sql_single=$bulk->single_sql;
Gets the raw sql statement used for single row inserts.
my $bulk_sql=$bulk->bulk_sql;
Gets the raw sql statement used for bulk row inserts.
my $single_sth=$bulk->get_prepared_single_sth;
Gets the prepared statement handle for single row inserts.
my $bulk_sth=$bulk->get_prepared_bulk_sth;
Gets the prepared statement handle for bulk row inserts.
my @buffer=$bulk->get_buffered_data;
Returns a list containing the current buffered data
SEE ALSO
DBI, DBD::mysql
Source Forge Project
If you find this software usefil please donate to the Source Forge Project.
AUTHOR
Michael Shipper
COPYRIGHT AND LICENSE
Copyright (C) 2010 by Michael Shipper
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or, at your option, any later version of Perl 5 you may have available.