2014-09-10 3 views
0

Я использую простой скрипт perl для купирования миллионов строк в таблице DB mysql. Я использую Perl DBI и DBD :: mysql со сценарием. Пример кода нижеМассовая вставка в таблицу mysql DB с использованием perl

my $dbh = DBI->connect(<DB INFO>); 
my $sth; 
my $insert_com = "INSERT INTO TAB1 VALUES(?,?,?,?,?)"; 
for (1..50000000){ 

    $sth = $dbh->prepare($insert_com); 
    $sth->execute(<val1>,<val2>,<val3>,<val4>,<val5>); 

} 

В соответствии с приведенным выше кодом, я думаю, что фиксация отправляется для каждой итерации цикла. Вопрос, который у меня есть, можно отправить каждую транзакцию на каждую итерацию? i.e для фиксации после вставки n числа строк в таблицу. Если это возможно, может кто-нибудь, пожалуйста, скажите мне, как это сделать. Заранее спасибо. Приветствия ...

+0

возможный дубликат [MySQL вставки 20K строк в одной вставке] (http://stackoverflow.com/questions/22164070/mysql-insert-20k-rows-in-single-insert) –

+0

Возьмите '$ sth = $ dbh-> prepare ($ insert_com);' выписка из цикла –

ответ

2

Вы должны установить затем «AutoCommit к нулю:.

$dbh = DBI->connect($dsn, $user, $password, 
         { RaiseError => 1, AutoCommit => 0 }); 

и называть все п строк $dbh->commit()

См DBI Documentation для более подробной информации

+0

Спасибо, куча ... – afwsl2003

Смежные вопросы