Mysql
 sql >> Database >  >> RDS >> Mysql

Come eseguire un inserimento collettivo in MySQL?

Un inserimento di massa in MySQL è quando è necessario inserire molti record in una tabella contemporaneamente. Può essere utilizzato per creare rapidamente dati per il test. È noioso riscrivere l'istruzione di inserimento per ogni riga. Ecco come puoi inserire in blocco in MySQL.

Inserimento collettivo in MySQL

Sintassi

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( a1, a2,...aN ),( b1, b2,...bN ),..;

a1, a2, a3,.. – valori per campo1
b1, b2, b3,.. – valori per campo2
c1, c2, c3,.. – valori per campo3

Esempio
Per una tabella nome_tabella con le colonne a, b, c

mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3);
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   3  |
+------+------+------+

Come puoi vedere, l'inserimento in blocco in MySQL consente righe/colonne duplicate. Potrebbe causare chiavi primarie duplicate. Ecco come evitarlo.

Inserimento collettivo in MySQL senza duplicati

Usiamo la clausola ON DUPLICATE KEY. Rileva i valori duplicati della chiave primaria. Aggiungiamo anche una clausola UPDATE per aggiornare il valore duplicato.

Sintassi

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( a1, a2,...aN ),( b1, b2,...bN ),..
                       ON DUPLICATE KEY
                       UPDATE primary_key_field=<expression> ;

a1, a2, a3,.. – valori per campo1
b1, b2, b3,.. – valori per campo2
c1, c2, c3,.. – valori per campo3

Esempio
Per una tabella nome_tabella con le colonne a, b, c e c è la chiave primaria

mysql> INSERT INTO table_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9),(3,3,3)
ON DUPLICATE KEY UPDATE c=c+1;
+------+------+------+
|   a  |   b  |   c  |
+------+------+------+
|   1  |   2  |   3  |
|   4  |   5  |   6  |
|   7  |   8  |   9  |
|   3  |   3  |   4  |
+------+------+------+

Puoi anche aggiornare il valore in base ad altre colonne