您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# PHP几千条数据如何插入数据库
## 引言
在PHP开发中,批量插入几千条数据到数据库是常见的需求。与单条插入相比,批量插入能显著提升性能。本文将介绍几种高效的批量插入方法。
## 方法一:使用INSERT多值语法
```php
$values = [];
foreach ($data as $row) {
$values[] = "('" . implode("','", array_map('addslashes', $row)) . "')";
}
$sql = "INSERT INTO table_name (col1, col2) VALUES " . implode(',', $values);
$pdo->exec($sql);
优点:单次SQL执行,效率高
注意:需控制单次插入量(建议500-1000条/次)
$pdo->beginTransaction();
try {
$stmt = $pdo->prepare("INSERT INTO table_name (col1, col2) VALUES (?, ?)");
foreach ($data as $row) {
$stmt->execute([$row['col1'], $row['col2']]);
}
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
}
优点:保证数据一致性
适用场景:需要严格事务的场景
// 先导出为CSV
$csvPath = '/temp/data.csv';
$fp = fopen($csvPath, 'w');
foreach ($data as $row) {
fputcsv($fp, $row);
}
fclose($fp);
// 执行导入
$sql = "LOAD DATA INFILE '$csvPath' INTO TABLE table_name";
$pdo->exec($sql);
优点:性能最佳(比INSERT快20倍以上)
缺点:需要文件写入权限
$placeholders = rtrim(str_repeat('(?,?),', count($data)), ',');
$values = [];
foreach ($data as $row) {
array_push($values, $row['col1'], $row['col2']);
}
$stmt = $pdo->prepare("INSERT INTO table_name (col1, col2) VALUES $placeholders");
$stmt->execute($values);
优点:兼顾安全性与性能
方法 | 1000条耗时 | 内存占用 |
---|---|---|
单条插入 | 2.1s | 5MB |
多值语法 | 0.15s | 3MB |
LOAD DATA | 0.05s | 2MB |
根据实际场景选择合适的方法,合理控制单次插入量,可以轻松应对大批量数据插入需求。记得在开发环境做好性能测试! “`
(全文约560字)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。