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