从 CSV 文件高效导入数据到 PHP 数据库93


在 PHP 应用中,经常需要将数据从 CSV (逗号分隔值) 文件导入到数据库中。这种数据传输方式简单且高效,特别适用于大批量数据的迁移。

步骤指南以下是一步一步的指南,演示如何使用 PHP 将数据从 CSV 文件导入到 MySQL 数据库:

1. 建立数据库连接


首先,使用 PDO (PHP 数据对象) 连接到 MySQL 数据库。以下是连接代码示例:```php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "myDB";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
```

2. 准备 CSV 文件


确保 CSV 文件格式正确,每一行都以逗号分隔,每一列都包含一个数据值。首行通常包含列标题。

3. 创建导入表


在 MySQL 数据库中创建目标表,用于存储导入的数据。确保表的结构与 CSV 文件的列布局匹配。```sql
CREATE TABLE `myTable` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`phone` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
);
```

4. 解析 CSV 文件


使用 PHP 的 `fgetcsv` 函数解析 CSV 文件,逐行读取数据。```php
$handle = fopen("", "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
// 逐行处理数据...
}
fclose($handle);
```

5. 导入数据


使用 PDO 的 `prepare` 和 `execute` 方法将解析后的数据插入到数据库表中。使用参数化查询以防止 SQL 注入。```php
$sql = "INSERT INTO `myTable` (`name`, `email`, `phone`) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
foreach ($data as $row) {
$stmt->execute([$row[0], $row[1], $row[2]]);
}
```

6. 关闭连接


导入完成后,关闭数据库连接以释放资源。```php
$conn = null;
```

最佳实践* 大块传输:一次性导入大块数据以提高效率。
* 使用参数化查询:防止 SQL 注入,并提高查询性能。
* 优化查询:使用索引或 WHERE 子句来优化数据导入查询。
* 处理异常:使用 try-catch 块来捕获导入过程中可能发生的任何错误。
* 分批导入:对于非常大的 CSV 文件,将其分成较小的批次进行导入,以避免内存不足错误。

2024-10-26


上一篇:PHP 中使用 MySQL 建立数据库

下一篇:PHP 中调用数据库:简明指南