phpcsv数据处理 php 数据处理

PHP导出CSV格式文件因为导出数据中有英文逗号导致分列错误怎么处理

CSV文件的格式本身就是以英文逗号分列,然后回车分行的文本类型!所以,你的问题,如果某一列中包含英文逗号的话将这一列用引号引起来!比如:

成都创新互联公司是一家专业提供红花岗企业网站建设,专注与成都网站设计、做网站、成都外贸网站建设公司H5开发、小程序制作等业务。10年已为红花岗众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

a,"b,c",d

这样就会是三列,而不是四列

phpmysql导出千万级csv最快方法

1、首先创建要插入100万数据的表格,随机产生数字。

2、其次创建存储过程,并向表中插入数据,调用存储过程进行插入数据,插入300万条数据,且分几次插入。

3、最后导出数据到csv,使用函数selectxxxintooutfile,其中outfile后面的路径可以是Windows或macOS或者Linux。

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中的三行数据


名称栏目:phpcsv数据处理 php 数据处理
当前URL:http://ybzwz.com/article/dojpijs.html