重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
下载 PHPExcel
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:主机域名、网站空间、营销软件、网站建设、汕头网站维护、网站推广。
require_once( './PHPExcel/IOFactory.php');
$filePath = 'D:/xxx.xlsx'; //excel 文件名
$objReader = new PHPExcel_Reader_Excel2007(); //具体查看(Documentation/Examples/Reader/exampleReader01.php)
$objPHPExcel = $objReader-load($filePath);
$sheetData = $objPHPExcel-getActiveSheet()-toArray(null,true,true,true);
$insql = 'insert into 表名(x,x,x) valeus';
//遍历数组 $sheetData
//如果有标题 先删除 unset($sheetData[1]);
foreach($sheetData as $k = $data){
$insql .= '('.$data['A'].','.$data['B'].','.$data['C'].'),';
//一次插入100条数据 减少数据库压力
if(($k+1 / 100) == 0){
$insql = rtrim($insql,',').';'; //将最后的逗号替换成分好
//插入数据库 并且重置 字符串 $insql
//或者保存到文件中 利用source 命令插入数据库
}
}
优化SQL插入语句;
比如循环一条一条插入,改成链接多个值进行插入。
将:
foreach($re as $it){
$sql="insert into table (id,name) values(".$it['id'].","."$it['name'].")";
mysql_query($sql);
}
改为:
$sql="insert into table (id,name) values";
foreach($re as $it){
$str= "'".$it['id']."','".$it['name']."'";
}
$sql .= "(".$str."),";
$sql2 = substr($sql,0,-1);
mysql_query($sql);
打开mysql的配置文件,my.ini文件,并找到:max_allowed_packet项;
将值修改大一点,具体根据自己需要修改。比如这里修改为:1G。
重启mysql服务;
5
如果运行页面提示内存溢出,可将值设大一点。
Allowed memory size of 134217728 bytes exhausted (tried to allocate 132907287 bytes)
步骤阅读
6
这样,面对千万数据导入的时候,比原来那种方法至少快好多倍。
需要PHP基础知识和数据库基础知识。
以SQL为例。使用PHP MySQL 函数可以编辑数据库。
mysql_connect() 函数打开MySQL 连接。举例
?php
$con = mysql_connect("localhost","mysql_user","mysql_pwd");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}// 一些代码...mysql_close($con);
?
mysql_connect()三个参数分别是服务器名,连接账号,连接密码。
连接之后,可以使用mysql_select_db()设置要处理的数据库,后面则是用数据库语句处理数据。SQL语法简介网页链接
如果是用mysql数据库的话,一条语句可以插入几千条语句。类似以下语句:
insert into table_name (field1,field2) values (1,2),(2,3),(3,5),(5,6)
请查看mysql手册。
其他数据库请查阅相应手册。
在使用PhpMyAdmin的时候经常用到数据的导入和导出(Export/Import),但是在导入大数据的时候由于php上传文件的限制和脚本响应时间的限制,导致phpMyAdmin无法导入大数据。很多时候都是由于文件过大,从本地浏览上传导入,容易中断失败,有没有更好的方法呢?
方法:
在phpMyAdmin的目录下,找到根目录的config.inc.php文件,
打开config.inc.php文件,查找$cfg['UploadDir'],这个参数就是设定导入文件存放的目录,这里把值设定为:ImportSQLFile。
在phpMyAdmin目录下,建立以ImportSQLFile命名的文件夹,
把我们需要导入的数据文件,放到ImportSQLFile文件夹下面,非常简单,
登入phpMyAdmin,选择需要导入的数据,点击导航条上面的“导入”按钮,
选中“从网站服务器上传文件夹ImportSQLFile/中选择:”选项,并需要导入的数据文件,
最后点击“执行”,即可导入成功。
注意事项
如果在config.inc.php文件,没有找到$cfg['UploadDir'],可以自己在文件中添加上去即可。