PHP读取大文本文件并处理数据的思路
//处理文件
$file = fopen($filename, "r") or exit("Unable to open file!");
$total_line = 0;
while(!feof($file)){
$f = fgets($file);
$total_line++; //总行数
} $for_count = intval($total_line / 1000);
$txt=file($filename);
//$txt[0] 表示第一行, $txt[1] 表示第二行, ...
for($m=0;$m<=$for_count;$m++){
$start = $m * 1000;
$end = $start + 1000;
if($end > $total_line){
$end = $total_line;
}
//echo $start.'---'.$end."\n";
$sql_value = '';
for($i=$start;$i<$end;$i++){
if($txt[$i]){
$data = explode(",", $txt[$i]);
$data[2] = "'".$data[2]."'";
$data[28] = "'".str_replace("\n", "", $data[28])."'"; //转换得到sql语句的值
$sql_value .= "(".implode(",", $data)."),";
unset($data);
}
}
$sql_value = substr($sql_value, 0, -1);
$add_sql = "insert into tbname ({$fields}) values ".$sql_value; $add_res = mysqli_query($conn,$add_sql);
if ($add_res) {
echo 'OK';
}else{
echo 'Error';
file_put_contents($file_err_name.$m, $add_sql);
} }
【附】不分条一次性处理整个文本:
//处理文件
$file = fopen($filename, "r") or exit("Unable to open file!");
$sql_value = ''; while(!feof($file)){
$f = fgets($file);
if($f){
$data = explode(",", $f);
$data[2] = "'".$data[2]."'";
$data[28] = "'".str_replace("\n", "", $data[28])."'";
//转换得到sql语句的值
$sql_value .= "(".implode(",", $data)."),";
} unset($data);
} //添加入库
$sql_value = substr($sql_value, 0, -1);
$add_sql = "insert into tbname ({$fields}) values ".$sql_value; $add_res = mysqli_query($conn,$add_sql);
if ($add_res) {
echo 'OK';
}else{
echo 'Error';
file_put_contents($file_err_name, $add_sql);
}
unset($sql_value); fclose($file);
PHP读取大文本文件并处理数据的思路的更多相关文章
- Python最快的方式来读取大文本文件(几GB)
我有一个大文本文件(约7 GB).我正在寻找是否存在阅读大文本文件的最快方法.我一直在阅读有关使用多种方法作为读取chunk-by-chunk以加快进程的过程. 例如,effbot建议 # File: ...
- C#读取大文本文件
今天偶遇一同事抱怨,sqlserver导出的CSV,明明有1000W条,但用excel打开就只剩100W了,足足消失了90%,所以她怀疑文件是足量的1000W条,是excel捣了鬼.可是文件容量有2G ...
- java读取大文本文件
原文:http://blog.csdn.net/k21325/article/details/53886160 小文件当然可以直接读取所有,然后放到内存中,但是当文件很大的时候,这个方法就行不通了,内 ...
- ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK
看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, 加入一个表10W数据,另一个表也是10万数据,当你用linq建立一个连接查询 ...
- ASP.NET MVC + EF 利用存储过程读取大数据
ASP.NET MVC + EF 利用存储过程读取大数据,1亿数据测试很OK 看到本文的标题,相信你会忍不住进来看看! 没错,本文要讲的就是这个重量级的东西,这个不仅仅支持单表查询,更能支持连接查询, ...
- J2SE 8的输入输出--读取/写入文本文件和读取/写入二进制数据
读取/写入文本文件 // 1. 文本输入 // (1) 短小文本直接转入字符串 String string = new String(Files.readAllBytes(Paths.get(&quo ...
- pymysql 读取大数据内存卡死的解决方案
背景:目前表中只有5G(后期持续增长),但是其中一个字段(以下称为detail字段)存了2M(不一定2M,部分为0,平均下来就是2M),字段中存的是一个数组,数组中存N个json数据.这个字段如下: ...
- [C#]_[使用微软OpenXmlSDK (OpenXmlReader)读取xlsx表格] 读取大数据量100万条数据Excel文件解决方案
1.OpenXmlSDK是个很好的类库,可惜只能通过C#调用,C#的童鞋又福气了. 2.服务端程序由于没法安装office,所以这个对asp.net网站来说是最理想的库了.需要.net 4.0版本 ...
- Java多线程读取大文件
前言 今天是五一假期第一天,按理应该是快乐玩耍的日子,但是作为一个北漂到京师的开发人员,实在难想出去那玩耍.好玩的地方比较远,近处又感觉没意思.于是乎,闲着写篇文章,总结下昨天写的程序吧. 昨天下午朋 ...
随机推荐
- 邓_PPT
如何拯救一份丑到爆的PPT? "小邓,这是我做的PPT,你优化优化,明天早上给我,上午客户来要用." 领导,你这是PPT嘛,明明就是word嘛. "小张啊,你看看我这个P ...
- NSString拼接字符串
NSString* string; // 结果字符串 02 NSString* string1, string2; //已存在的字符串,需要将string1和string2连接起来 03 04 / ...
- html静态页面乱码
1.将文件保存为UTF-8 2.写入以下代码 <!-- 防止中文乱码 --><meta http-equiv="Content-Type" content=&qu ...
- [Qt Quick] qmlscene工具的使用
qmlscene是Qt 5提供的一个查看qml文件效果的工具.特点是不需要编译应用程序. qmlscene = qml + scene (场景) qmlscene.exe位于Qt的安装目录下 (类似/ ...
- 转-WebService到底是什么?
原文链接:WebService到底是什么? 一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍和网站都大肆的提及和宣传WebService技术,其中不乏很多 ...
- 一、Html简介
html什么东西呢? hypertext markup language(超文本标记语言).超级文本标记语言是标准通用标记语言下的一个应用,也是一种规范,一种标准, 它通过标记符号来标记要显示的网页中 ...
- jsp的语法
JSP指令和脚本元素指令 <%@ 指令%>声明 <%! 声明%>表达式 <%= 表达式%>代码段/脚本段 <% 代码段%>注释 <%-- 注释-- ...
- java判断时间大小
//构造日期格式yyyy-MM-NN SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date d ...
- redis数据类型-集合类型
集合类型 在集合中的每个元素都是不同的,且没有顺序. 一个集合类型(set)键可以存储至多2 32-1个(相信这个数字对大家来说已经很熟悉了)字符串. 集合类型的常用操作是向集合中加入或删除元素.判断 ...
- Zabbix3.4部署
Zabbix简介 zabbix(音同 zæbix)是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活 ...