我正在使用插入命令通过 PHP 将大型数据集传递到 MySQL 表中,我想知道是否可以通过查询一次插入大约 1000 行,而不是将每个值附加在一英里的末尾 -长字符串,然后执行它。我正在使用 CodeIgniter 框架,因此我也可以使用它的功能。
最佳答案
在 MySQL 中,将多行组合成一个 INSERT
语句比每行组合一个 INSERT
语句要快得多。
也就是说,听起来您可能会遇到 PHP 中的字符串处理问题,这实际上是一个算法问题,而不是语言问题。基本上,在处理大字符串时,您希望最大限度地减少不必要的复制。首先,这意味着您要避免串联。构建大型字符串(例如一次插入数百行)的最快且最有效的内存效率方法是利用 implode()
函数和数组赋值。
$sql = array();
foreach( $data as $row ) {
$sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));
这种方法的优点是,您不必复制和重新复制到目前为止用每个串联组装的 SQL 语句;相反,PHP 在 implode()
语句中执行此操作一次。这是一次巨大胜利。
如果您有很多列要放在一起,并且其中一个或多个列非常长,您还可以构建一个内部循环来执行相同的操作,并使用 implode()
来分配值子句到外部数组。
关于php - 如何使用 CodeIgniter 框架从数组中插入多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35398821/