Mysql
 sql >> база данни >  >> RDS >> Mysql

Perl DBI вмъкване на множество редове, използвайки собствена способност за многократно вмъкване на mysql

Има два подхода. Можете да вмъкнете (?, ?, ?) няколко пъти в зависимост от размера на масива. Текстовата манипулация би била нещо като:

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

След това изравнете масива за извикване на execute() . Бих избегнал този начин поради трънливите манипулации с низове и масиви, които трябва да се направят.

Другият начин е да започнете транзакция, след което да изпълните един оператор за вмъкване няколко пъти.

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;

Това е малко по-бавно от първия метод, но все пак избягва повторното анализиране на изявлението. Той също така избягва фините манипулации на първото решение, като същевременно е атомичен и позволява оптимизиране на дисковия вход/изход.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tomcat7:Не можа да се зареди JDBC клас драйвери [com.mysql.jdbc.Driver]

  2. Избраните колони нямат съвместим тип, дори и той да има същия тип

  3. Как да анализирате в PHP и да съхранявате в база данни?

  4. Промяна на папката tmp на mysql

  5. Пивотни таблици в MySQL