Heim  >  Artikel  >  Backend-Entwicklung  >  PHP implementiert das Batch-Einfügen von Daten in MySQL

PHP implementiert das Batch-Einfügen von Daten in MySQL

王林
王林nach vorne
2020-01-31 21:46:484353Durchsuche

PHP implementiert das Batch-Einfügen von Daten in MySQL

Jetzt gibt es eine solche Tabelle. Wie können wir eine große Datenmenge in diese Tabelle einfügen?

CREATE TABLE IF NOT EXISTS `user_info` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`name` varchar(255) NOT NULL default '' COMMENT '姓名',
`age` int(11) NOT NULL default '0' COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

Batch-Einfügung

Methode 1. Verwenden Sie die for-Schleife zum Einfügen

Beim Einfügen einer kleinen Datenmenge in MySQL verwenden wir normalerweise die for-Schleife

(Verwandte Video-Tutorial-Freigabe: php-Video-Tutorial)

$arr = [ 
[
'name' => 'testname1',
'age' => 18,
],
[
'name' => 'testname2',
'age' => 19,
],
[
'name' => 'testname3',
'age' => 18,
],
];

$servername = "localhost";
$port = 3306;
$username = "username";
$password = "password";
$dbname = "mytestdb";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname, $port);

// 检测连接
if ($conn->connect_error) {
die("connect failed: " . $conn->connect_error);
} 

$costBegin = microtime(true);

foreach($arr as $item) {
$sql = sprintf("INSERT INTO user_info (name, age) VALUES ( '%s', %d);", $item['name'], (int)$item['age']); 
if ($conn->query($sql) === TRUE) {
echo "insert success";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}

$costEnd = microtime(true);
$cost = round($costEnd - $costBegin, 3);
var_dump($cost);

$conn->close();

Wenn Sie große Datenmengen stapelweise einfügen möchten, ist es kein Problem, wenn Sie zum Einfügen auch eine for-Schleife verwenden. aber es wird länger dauern. Vergleichen Sie das Einfügen einer kleinen Datenmenge mit dem Einfügen einer großen Datenmenge. Die Zeit, die zum Einfügen mithilfe der obigen for-Schleife benötigt wird: Zeit für die Anzahl der Elemente (Einheit: Sekunden)

PHP implementiert das Batch-Einfügen von Daten in MySQL

Methode 2. Verwenden Sie die Insert-Anweisung zum Zusammenführen. Einfügen

In MySQL können Sie die Insert-Anweisung zum Zusammenführen von Einfügungen verwenden, z. B.

INSERT INTO user_info (name, age) VALUES (&#39;name1&#39;, 18), (&#39;name2&#39;, 19);表示一次插入两条数据

$arr = [ 
[
&#39;name&#39; => &#39;testname1&#39;,
&#39;age&#39; => 18,
],
[
&#39;name&#39; => &#39;testname2&#39;,
&#39;age&#39; => 19,
],
[
&#39;name&#39; => &#39;testname3&#39;,
&#39;age&#39; => 18,
],
// 此处省略
……
……
];

$servername = "localhost";
$port = 3306;
$username = "username";
$password = "password";
$dbname = "mytestdb";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname, $port);

// 检测连接
if ($conn->connect_error) {
die("connect failed: " . $conn->connect_error);
} 

$costBegin = microtime(true);

if (!empty($arr)) {
$sql = sprintf("INSERT INTO user_info (name, age) VALUES ");

foreach($arr as $item) {
$itemStr = &#39;( &#39;;
$itemStr .= sprintf("&#39;%s&#39;, %d", $item[&#39;name&#39;], (int)$item[&#39;age&#39;]);
$itemStr .= &#39;),&#39;;
$sql .= $itemStr;
}

// 去除最后一个逗号,并且加上结束分号
$sql = rtrim($sql, &#39;,&#39;);
$sql .= &#39;;&#39;;

if ($conn->query($sql) === TRUE) {
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}

$costEnd = microtime(true);
$cost = round($costEnd - $costBegin, 3);
var_dump($cost);

$conn->close();

Schauen wir uns den Zeitvergleich zwischen einer kleinen Menge an von Daten und einer großen Datenmenge. Aus der Gesamtzeit ist ersichtlich, dass das Einfügen einer Zusammenführung im Vergleich zum Einfügen einer For-Schleife gerade viel Zeit spart, und der Effekt ist offensichtlich

Wenn Sie der Meinung sind, dass das Array zu groß ist und Sie das Risiko von SQL-Fehlern verringern möchten, können Sie auch array_chunk verwenden, um das Array in Blöcke einer bestimmten Größe zu schneiden und dann jeden Block zusammenzuführen und einzufügen . PHP implementiert das Batch-Einfügen von Daten in MySQL

Empfohlene verwandte Artikel und Tutorials:

PHP-Tutorial

Das obige ist der detaillierte Inhalt vonPHP implementiert das Batch-Einfügen von Daten in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen