解压上传的文本文件压缩包并将解压后的文本文件内容插入到数据库

$content = file_get_contents($_FILES["file"]["tmp_name"]);
		$ret->content = $content;
		if (file_exists("/var/www/api/uploads//" . $_FILES["file"]["name"]))
		{
			echo $_FILES["file"]["name"] . " already exists. ";
		}
		else
		{
			move_uploaded_file($_FILES["file"]["tmp_name"],"/var/www/api/uploads/" . $_FILES["file"]["name"]);
			echo "Upload file Stored in: " . "/var/www/api/uploads/" . $_FILES["file"]["name"];
		}
		
		$zip = new ZipArchive;
		$filename = $_FILES["file"]["name"];
		$path = "/var/www/api/uploads";
		if(!file_exists($path."/".$filename)){
			die("The zip file $filename not exist!");
		}
		//打开压缩包
		$resource = $zip->open($path."/".$filename);

		if ($resource === TRUE) {
			echo "Unzip successed!";
			//解压缩到服务器上传目录底下
			$zip->extractTo('/var/www/api/uploads');
			$array1 = get_object_vars($zip);
			$bigarr = array();
			for ($i=0;$i<$array1['numFiles'];$i++){
				//根据压缩内的文件名称,获取该文件的文本流
				$stream = $zip->getStream($zip->getNameIndex($i));
				$str = stream_get_contents($stream);
				$str = str_replace(array("\r\n", "\r", "\n"), ",", $str);
				$arr = explode(",",$str);
				$bigarr = array_merge($bigarr, $arr);
				unset($str);
			}
			$zip->close();
			
			echo count($bigarr);
			$device = new device();
			$device->add($bigarr, '2015-12-21', '2015-12-21', '2000');
		} else {
			echo 'Unzip failure!, code:' . $resource;
		}
global $pdo;
		$sql = 'INSERT INTO device VALUES';
		$arr = array_fill(0, count($data), "(?, $listing_date, $create_time, $create_uid, 0, 0)");
		$sql .= join(',', $arr);
		
		$stmt = $pdo->prepare($sql);
		$stmt->execute($data);

拼接SQL语句进行一次性插入:

//将所有数据等分成5000个数据每份,每次插入5000个值
			$pices = array_chunk($bigarr, 5000);
			
			foreach ($pices as $pice){
				$device->add($pice, '2015-12-21', '2015-12-21', '2000');
			}



转载于:https://my.oschina.net/zhouyang2021/blog/503719

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值