PHP Excel大批量导入崩溃怎么办?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP Excel大批量导入崩溃怎么办?相关的知识,希望对你有一定的参考价值。

使用php在进行数据导入的时候,由于每导入一条数据就要查询一次数据库进行对比后操作,但是进行一半的时候程序就进行不下去了,这个怎么做才最好呢

项目需要批量导入excel文件,如果里面有重复的数据要怎么处理呢?每插入一次数据都要到数据库查询么?
回复内容:
项目需要批量导入excel文件,如果里面有重复的数据要怎么处理呢?每插入一次数据都要到数据库查询么?

1、如果里面有重复的数据要怎么处理呢?

1

<code>可以先判断数据库是否有该数据。</code>

2、每插入一次数据都要到数据库查询么

1

<code>是的。</code>

先去重得到没有重复的数据,再批量插入数据库。也可以尝试mysql中的insert ignore into或 replace into

如果查询比较慢,对不能重复的字段加唯一键,然后用INSERT IGNORE INTO
php批量导入数据出错
我现在要做的是,把一个产品数据从EXCEL中导入到PHP的MYSQL中,导入的过程中,总是会提示“Allowed memory size of 167772160 bytes exhausted (tried to allocate 689919 bytes) in D:\wamp\www\Company\product\admin\uploadOrder.php on line 167”这个错误,然后我分成第100条导入时,就不会提示这个错误,这个是不是内存溢出,有没有好的解决方法呢?

------解决方案--------------------
php.ini中讲memory_limit选项设置大一点,然后重启apache或nginx就行了
------解决方案--------------------
文件太大了,这样的话可以用source命令直接导入!
------解决方案--------------------
参考技术A 如果是超过30秒、或者60秒PHP进程被自动关闭,可以用下面的语句延长这个时限:

set_time_limit(1200);

另外,建议改变算法,数据库中新建临时表,导入EXCEL所有数据到临时,关联数据库其他表对临时表进行整理,例如补充不完整数据、删除重复数据,最后把临时表数据写入永久表。

C# 自己写的Winform程序批量导入Excel文件到Oracle数据库的过程中,程序运行会很慢!而且Winform窗体会卡

C# 自己写的Winform程序批量导入Excel文件到Oracle数据库的过程中,程序运行会很慢!而且Winform窗体会卡住,直到导入成功为止,我知道这应该是在主线程执行的结果,怎么让程序在子线程执行,不让窗体卡住!

参考技术A 使用BackGroundWorker类来实现你的需求
这个类有两个事件
DoWork//异步处理
RunWorkerCompleted //处理完成以后,会回调这个函数
使用线程,不能帮你提高速度,只能实现程序的异步处理,让程序可以响应用户的GUI操作
参考技术B 这个你就可以用线程调用了。
方法引用是:System.Threading。
至于线程直接调用方法就可以了。如果不明白的百度学习下线程的使用方法。
希望楼主早日解决问题,如果有什么不明白的可以HI百度我~~~来自:求助得到的回答本回答被提问者和网友采纳
参考技术B PageOffice能解决这个问题 参考技术C 比如你原来是这么导入:
ImportExcel();
修改为:
new Thread(ImportExcel).Start();

以上是关于PHP Excel大批量导入崩溃怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

php批量导入带有图片的Excel表格

文本数据怎么批量导入Elasticsearch

VBA批量导入文本文件,如何转换二维数组?

MYSQL怎么批量导入多个excel文件,字段都是对应的

如何高效地批量导入数据到SqlServer

如何高效地批量导入数据到SqlServer