ngcp-panel/lib/NGCP/Panel/Utils/MySQL.pm

44 lines
973 B

package NGCP::Panel::Utils::MySQL;
use warnings;
use strict;
sub bulk_insert {
my(%params) = @_;
my ($c, $s, $trans, $query, $data, $chunksize) = @params{qw/c schema do_transaction query data chunk_size/};
my $guard;
my $qparams = @{ $data->[0] };
my $dbh = $s->storage->dbh;
$guard = $s->txn_scope_guard if $trans;
while(@{ $data }) {
my @chunk = splice(@{ $data }, 0, $chunksize);
my $q = $query . " VALUES " . join(",", ("(".join (",", (("?") x $qparams)).")") x @chunk );
my $sth = $dbh->prepare($q);
$sth->execute(map { @{ $_ } } @chunk);
$sth->finish;
}
$guard->commit if $trans;
return;
}
sub truncate_table {
my(%params) = @_;
my ($c, $s, $trans, $table) = @params{qw/c schema do_transaction table/};
my $guard;
my $dbh = $s->storage->dbh;
$guard = $s->txn_scope_guard if $trans;
my $q = 'TRUNCATE TABLE ' . $table;
my $sth = $dbh->prepare($q);
$sth->execute;
$sth->finish;
$guard->commit if $trans;
return;
}
1;