Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Perl DBI wstawia wiele wierszy za pomocą natywnej funkcji wielokrotnego wstawiania mysql

Istnieją dwa podejścia. Możesz wstawić (?, ?, ?) kilka razy na podstawie rozmiaru tablicy. Manipulacja tekstem wyglądałaby mniej więcej tak:

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

Następnie spłaszcz tablicę do wywołania execute() . Unikałbym w ten sposób ze względu na ciernistą manipulację łańcuchami i tablicami, którą należy wykonać.

Innym sposobem jest rozpoczęcie transakcji, a następnie wielokrotne uruchomienie pojedynczej instrukcji INSERT.

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;

Jest to nieco wolniejsze niż pierwsza metoda, ale nadal pozwala uniknąć ponownej analizy instrukcji. Unika również subtelnych manipulacji pierwszego rozwiązania, pozostając jednocześnie atomowym i umożliwiając optymalizację we/wy dysku.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dostęp do WordPressa

  2. Przygotowana instrukcja PDO fetch() zwracająca podwójne wyniki

  3. Zainstaluj MySQL 5.6 na Ubuntu 20.04

  4. Dane w kolumnie są za długie — dlaczego?

  5. Różnice między DATA INFILE i LOAD DATA LOCAL INFILE