Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Perl DBI menyisipkan beberapa baris menggunakan kemampuan menyisipkan multipel asli mysql

Ada dua pendekatan. Anda dapat memasukkan (?, ?, ?) beberapa kali berdasarkan ukuran array. Manipulasi teks akan menjadi seperti:

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

Kemudian ratakan array untuk memanggil execute() . Saya akan menghindari cara ini karena string berduri dan manipulasi array yang perlu dilakukan.

Cara lainnya adalah memulai transaksi, lalu menjalankan satu pernyataan penyisipan beberapa kali.

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;

Ini sedikit lebih lambat dari metode pertama, tetapi masih menghindari reparsing pernyataan. Ini juga menghindari manipulasi halus dari solusi pertama, sambil tetap atomik dan memungkinkan I/O disk dioptimalkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kasus penggunaan MySQL `FORCE INDEX`?

  2. Buat objek PHP secara dinamis berdasarkan string

  3. MYSQL - Kelompokkan menurut batas

  4. Apakah aman membandingkan string dengan 'lebih besar dari' dan 'kurang dari' di MySQL?

  5. MacOSX:autostart mysql saat boot