Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Perl DBI chèn nhiều hàng bằng khả năng chèn nhiều gốc mysql

Có hai cách tiếp cận. Bạn có thể chèn (?, ?, ?) một số lần dựa trên kích thước của mảng. Thao tác văn bản sẽ giống như:

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

Sau đó làm phẳng mảng để gọi execute() . Tôi sẽ tránh theo cách này vì cần phải thực hiện thao tác chuỗi và mảng phức tạp.

Cách khác là bắt đầu một giao dịch, sau đó chạy một câu lệnh chèn nhiều lần.

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;

Cách này chậm hơn một chút so với phương pháp đầu tiên, nhưng nó vẫn tránh được việc phát lại câu lệnh. Nó cũng tránh các thao tác tinh vi của giải pháp đầu tiên, trong khi vẫn là nguyên tử và cho phép tối ưu hóa I / O của đĩa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chuyển đổi giá trị ngày giờ thành chuỗi

  2. Đặt các biến Truy vấn lớn như mysql

  3. Cách chọn từ tên bảng động

  4. Truy vấn xếp hạng nhóm PHP MYSQL

  5. Cơ sở dữ liệu MySQL với các trường duy nhất bị bỏ qua dấu cách kết thúc