php如何读取CSV大文件并且将其导入数据库示例

如题所述

思路:

读取csv文件,每读取一行数据,就插入数据库

示例

文件夹结构

/
 file.csv    //csv大文件,这里只模拟三行数据,不考虑运行效率(PS:csv文件格式很简单,文件一般较小,解析很快,运行效率的瓶颈主要在写入数据库操作)
 index.php    //php文件

file.csv

singi,20
lily,19
daming,23

index.php

/**
 * 读取csv文件,每读取一行数据,就插入数据库
 */

//获取数据库实例
$dsn = 'mysql:dbname=test;host=127.0.0.1';
$user = 'root';
$password = '';
try {
    $db = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

//读取file.csv文件
if (($handle = fopen("file.csv", "r")) !== FALSE) {
    while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) {
        //写入数据库
        $sth = $db->prepare('insert into test set name=:name,age=:age');
        $sth->bindParam(':name',$row[0],PDO::PARAM_STR,255);
        $sth->bindParam(':age',$row[1],PDO::PARAM_INT);
        $sth->execute();
    }
    fclose($handle);
}

数据表

CREATE TABLE `test` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NULL DEFAULT '' COLLATE 'utf8mb4_bin',
`age` INT(10) NULL DEFAULT '0',
PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;

运行结束后,数据库中会插入csv中的三行数据

温馨提示:答案为网友推荐,仅供参考
相似回答