csv文件导入存入数据库
时间:2011-05-10
来源:互联网
用tp做一个csv文件导入,然后存入到数据库中,最后以树状的形式显示出来, 问题是数据不能重复,而且要导入2000多条数据,代码写的不合理运行起来真是太漫长了, 哪位高手有什么好的建议没呢? 我把我写的代码附上,帮我看看,怎样提高代码执行效率呢? 谢谢!!!
$handle = fopen('./upload/'.$companyname.'/csv/'.$file_name,"r");
$count = 1;
while(!feof($handle))
{
$data = fgetcsv($handle);
if($count>1 && !empty($data))
{
if(!empty($data[1]))
{
$csv_info=$paper->where('box_code="'.$data[1].'" and client_id='.Session::get('client_id'))->select();
$arr_news = array();
foreach($csv_info as $vo)
{
$arr_new = array();
$parent_directory_id=$directory->where('directory_id='.$vo['directory_id'])->getField('parent_directory_id');
$newparent=$directory->where('directory_id='.$parent_directory_id)->find();
if($newparent['parent_directory_id']==0)
{
array_push ($arr_new,$newparent['directory_name']);
array_push($arr_new,$newparent['directory_id']);
}
array_push($arr_news,$arr_new);
}
for($n=0;$n<sizeof($arr_news);$n++)
{
for($m=0;$m<sizeof($arr_news[$n]);$m++)
{
$check[$m][$n]=$arr_news[$n][$m];
}
}
for($n=2;$n<8;$n++)
{
if(!empty($data[$n]))
{
if(!in_array($data[$n],$check[$n-2]))
{
$info['directory_name'] = empty($data[$n])?''data[$n];
if($n!=2)
{
$info['parent_directory_id'] = empty($id)?''id;
}
else
{
$info['parent_directory_id'] =0;
}
if($n==7)
{
$info['authority_level'] = empty($data[8])?''data[8];
}
else
{
$info['authority_level'] = 3;
}
$info['client_id'] =Session::get('client_id');
echo 'one<br>';
$id = $directory->add($info);
}
else
{
echo 'guolv<br>';
$boxs_array=array();
$boxs=$paper->where('box_code="'.$data[1].'"')->select();
foreach($boxs as $vo)
{
$newid=$directory->where('directory_id='.$vo['directory_id'])->getField('parent_directory_id');
if(!in_array($vo['directory_id'], $boxs_array))
{
array_push($boxs_array,$vo['directory_id']);
}
while($newid!=0)
{
if(!in_array($newid, $boxs_array))
{
array_push($boxs_array,$newid);
}
$newid=$directory->where('directory_id='.$newid)->getField('parent_directory_id');
}
}
$parentid=$directory->where('directory_name ="'.$data[$n].'"')->select();
$boxsizes = sizeof($boxs_array);
for($i=0;$i<$boxsizes;$i++)
{
foreach($parentid as $vo)
{
$parent_id = $vo['directory_id'];
if($boxs_array[$i]==$parent_id)
{
$id=$boxs_array[$i];
}
}
}
}
}
else
{
$msgs=$paper->where('client_id='.Session::get('client_id').' and box_code="'.$data[1].'" and directory_id='.$id)->select();
if(empty($msgs))
{
$dt['client_id'] =Session::get('client_id');
$dt['box_code'] = empty($data[1])?''data[1];
$dt['directory_id'] = $id;
$dt['paper_status'] = 1;
$dt['access_level'] = empty($data[8])?'3'data[8];
$dt['storage_time'] = empty($data[9])?time():dateTotime2($data[9]);
$dt['image_format'] = strtolower(empty($data[10])?'':$data[10]);
$paper->add($dt);
}
}
}
}
else
{ exit;
$this->redirect('Paper/importPaper/prompt/3');
}
}
$count++;
}
$handle = fopen('./upload/'.$companyname.'/csv/'.$file_name,"r");
$count = 1;
while(!feof($handle))
{
$data = fgetcsv($handle);
if($count>1 && !empty($data))
{
if(!empty($data[1]))
{
$csv_info=$paper->where('box_code="'.$data[1].'" and client_id='.Session::get('client_id'))->select();
$arr_news = array();
foreach($csv_info as $vo)
{
$arr_new = array();
$parent_directory_id=$directory->where('directory_id='.$vo['directory_id'])->getField('parent_directory_id');
$newparent=$directory->where('directory_id='.$parent_directory_id)->find();
if($newparent['parent_directory_id']==0)
{
array_push ($arr_new,$newparent['directory_name']);
array_push($arr_new,$newparent['directory_id']);
}
array_push($arr_news,$arr_new);
}
for($n=0;$n<sizeof($arr_news);$n++)
{
for($m=0;$m<sizeof($arr_news[$n]);$m++)
{
$check[$m][$n]=$arr_news[$n][$m];
}
}
for($n=2;$n<8;$n++)
{
if(!empty($data[$n]))
{
if(!in_array($data[$n],$check[$n-2]))
{
$info['directory_name'] = empty($data[$n])?''data[$n];
if($n!=2)
{
$info['parent_directory_id'] = empty($id)?''id;
}
else
{
$info['parent_directory_id'] =0;
}
if($n==7)
{
$info['authority_level'] = empty($data[8])?''data[8];
}
else
{
$info['authority_level'] = 3;
}
$info['client_id'] =Session::get('client_id');
echo 'one<br>';
$id = $directory->add($info);
}
else
{
echo 'guolv<br>';
$boxs_array=array();
$boxs=$paper->where('box_code="'.$data[1].'"')->select();
foreach($boxs as $vo)
{
$newid=$directory->where('directory_id='.$vo['directory_id'])->getField('parent_directory_id');
if(!in_array($vo['directory_id'], $boxs_array))
{
array_push($boxs_array,$vo['directory_id']);
}
while($newid!=0)
{
if(!in_array($newid, $boxs_array))
{
array_push($boxs_array,$newid);
}
$newid=$directory->where('directory_id='.$newid)->getField('parent_directory_id');
}
}
$parentid=$directory->where('directory_name ="'.$data[$n].'"')->select();
$boxsizes = sizeof($boxs_array);
for($i=0;$i<$boxsizes;$i++)
{
foreach($parentid as $vo)
{
$parent_id = $vo['directory_id'];
if($boxs_array[$i]==$parent_id)
{
$id=$boxs_array[$i];
}
}
}
}
}
else
{
$msgs=$paper->where('client_id='.Session::get('client_id').' and box_code="'.$data[1].'" and directory_id='.$id)->select();
if(empty($msgs))
{
$dt['client_id'] =Session::get('client_id');
$dt['box_code'] = empty($data[1])?''data[1];
$dt['directory_id'] = $id;
$dt['paper_status'] = 1;
$dt['access_level'] = empty($data[8])?'3'data[8];
$dt['storage_time'] = empty($data[9])?time():dateTotime2($data[9]);
$dt['image_format'] = strtolower(empty($data[10])?'':$data[10]);
$paper->add($dt);
}
}
}
}
else
{ exit;
$this->redirect('Paper/importPaper/prompt/3');
}
}
$count++;
}
作者: ttway 发布时间: 2011-05-10
高手看到之后,帮我看看,谢谢!!!
作者: ttway 发布时间: 2011-05-10
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28