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.

DBIx BulkLoader Mysql

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.