2009-05-29 94 views
0

我从数组中解析了数以千计的数据。我的关注点是我的脚本的处理时间,它是否会影响我的脚本的处理时间,因为我有十万条记录被插入到数据库中?我有一种方法可以批量处理数据到数据库的插入吗?使用PHP批量处理数组使用PHP

回答

0

这是SQL文件 - 但是你可以按照它的模式(如果不只是用它) -

它的文件分割成可以指定零件,说3000行,然后将它们插入一个定时间隔< 1秒到1分钟或更多。

这样一个大文件被破碎成较小的插入件等

这将有助于旁路编辑PHP服务器配置和担心内存限制等。如脚本的​​执行时间等。

新用户无法插入链接,以便谷歌搜索“SQL自卸大”或者,如果这个工程转到: WWW [点]奥泽罗夫[点]去[斜杠] bigdump [点] PHP

,所以你可以即使在理论上修改上述脚本以接受您的数组作为数据源而不是SQl文件。这显然需要一些修改。

希望它有帮助。 -R

+0

感谢大家的建议!我真的很感激它,我会尝试使代码与大转储相同的概念或只是修改它.. 再次感谢! – text 2009-05-29 15:05:03

0

它不太可能会影响处理时间,但您需要确保数据库的事务日志足够大,以便为100k行构建回滚段。

1

语法是:

INSERT INTO tablename (fld1, fld2) VALUES (val1, val2), (val3, val4)... ; 

所以,你可以写不便。像这样的(虚拟的例子):

foreach ($data AS $key=>$value) 
{ 
    $data[$key] = "($value[0], $value[1])"; 
} 
$query = "INSERT INTO tablename (fld1, fld2) VALUES ".implode(',', $data); 

这个工程上巨大的数据集相当快的事件,而不用担心性能,如果你的数据集装入内存。

0

或者与ADOdb中包装(http://adodb.sourceforge.net/):

// assuming you have your data in a form like this: 
$params = array(
      array("key1","val1"), 
      array("key2","val2"), 
      array("key3","val3"), 
      // etc... 
     ); 
// you can do this: 
$sql = "INSERT INTO `tablename` (`key`,`val`) VALUES (?, ?)"; 
$db->Execute($sql, $params);