sql >> Databáze >  >> RDS >> Mysql

Perl DBI vložit více řádků pomocí mysql nativní vícenásobné vkládání schopnosti

Existují dva přístupy. Můžete vložit (?, ?, ?) několikrát na základě velikosti pole. Manipulace s textem by byla něco jako:

my $sql_values = join( ' ', ('(?, ?, ?)') x scalar(@array) );

Poté sloučte pole pro volání execute() . Tomuto způsobu bych se vyhnul kvůli ožehavé manipulaci s řetězci a poli, kterou je třeba provést.

Druhým způsobem je zahájit transakci a poté několikrát spustit jeden příkaz vložení.

my $sql = 'INSERT INTO tbl (col1, col2, col3)';
$dbh->{AutoCommit} = 0;
my $sth = $dbh->prepare_cached( $sql );
$sth->execute( @$_ ) for @array;
$sth->finish;
$dbh->{AutoCommit} = 1;

Je to o něco pomalejší než první metoda, ale stále se vyhne přepracování příkazu. Vyhýbá se také jemným manipulacím s prvním řešením, přičemž je stále atomické a umožňuje optimalizaci diskových I/O.



  1. Architektura a ladění paměti v PostgreSQL databázích

  2. MariaDB MaxScale Load Balancing na Docker:Management:Část druhá

  3. SQLAlchemy - SQLite pro testování a Postgresql pro vývoj - Jak portovat?

  4. Jak používat Správce propojených tabulek v Accessu 2016