直接上接口代码:
public function updateKiwibuyuser(){
ini_set('memory_limit', '-1'); //PHP内存设置
$filePath = 'filename.csv'; // 文件路径 (要改成自己的路径)
$handle=fopen($filePath,"r");
$allData = array();
if (!$handle) {
exit('读取文件失败');
}
while (($data = fgetcsv($handle)) !== false) {
// 下面这行代码可以解决中文字符乱码问题
foreach ($data as $kk => $vv){
$data[$kk] = iconv('gbk', 'utf-8', $vv);
}
// 选择跳过的行数据,$data[0]每行第一列的名称,根据自己表格情况写
if ($data[0] == '用户名') {
continue;
}
// data 为每行的数据
array_push($allData,$data);
}
// 关闭文件
fclose($handle);
/********* 数据库查重操作,看需求是否要忽略 ***************/
// 读取数据库数据,并根据查询出来的字段,判定是否重复
$mysqlData = M('tablename')->field('field1')->select();
$hasData = array();
$resData = array();
foreach ($mysqlData as $k1 => $v1){
array_push($hasData, $v1['field1']);
}
foreach ($allData as $k2 => $v2){
if(in_array($v2[0], $hasData)){
unset($allData[$k2]); // 删除重复数据
}else{
array_push($resData, array('field1'=>trim($v2[0]),'field2'=>trim($v2[1])));
}
}
/**********************************************************/
$chunkData = array_chunk($resData , 500); //每500条数据分一组,(如果不查重操作,请把$resData换成$data,即要添加的数据)
$count = count($chunkData);
for ($i = 0; $i < $count; $i++) {
$res = M('tablename')->addAll($chunkData[$i]);
if(!$res){
echo $res;die;
}
}
echo '执行完毕';
}
有疑问或建议可评论回复,谢谢!