sql >> Databáze >  >> RDS >> Mysql

Jak provést hromadné vložení v MySQL?

Hromadné vkládání v MySQL je, když potřebujete vložit mnoho záznamů do tabulky najednou. Lze jej použít k rychlému vytvoření dat pro testování. Je únavné přepisovat příkaz insert pro každý řádek. Zde je návod, jak můžete hromadně vkládat do MySQL.

Hromadné vkládání do MySQL

Syntaxe

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

a1, a2, a3,... – hodnoty pro pole1
b1, b2, b3,... – hodnoty pro pole2
c1, c2, c3,... – hodnoty pro pole3

Příklad
Pro tabulku název_tabulky se sloupci 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  |
+------+------+------+

Jak můžete vidět, hromadné vkládání v MySQL umožňuje duplicitní řádky/sloupce. Může způsobit duplicitní primární klíče. Zde je návod, jak se tomu můžete vyhnout.

Hromadné vkládání do MySQL bez duplicit

Používáme klauzuli ON DUPLICATE KEY. Detekuje duplicitní hodnoty primárního klíče. Také přidáváme klauzuli UPDATE pro aktualizaci duplicitní hodnoty.

Syntaxe

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,... – hodnoty pro pole1
b1, b2, b3,... – hodnoty pro pole2
c1, c2, c3,... – hodnoty pro pole3

Příklad
Pro tabulku název_tabulky se sloupci a, b, c a c je primární klíč

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  |
+------+------+------+

Hodnotu můžete také aktualizovat na základě jiných sloupců

  1. Srovnání SQL Server int vs nvarchar z hlediska výkonu?

  2. Základní správa MaxScale pomocí MaxCtrl pro MariaDB Cluster – část druhá

  3. Čítač přírůstků MySQL SELECT

  4. Enterprise Manager 11g FMW Control v R12.2