44 lines
973 B
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;
|