所以我正在处理现有的代码库,该函数从csv获取每一行,格式化数据然后将其插入到数据库中。使用CSV中的行,整个过程大约需要20分钟。但是,如果我保持一切相同并删除实际执行数据库条目的行
$this->db->replace('my_table', $myObject);
整个代码大约需要2秒钟。所以我想知道是否可以存储所有对象,然后将它们全部分配给DB?我正在考虑做一次sql调用,而不是成千上万。想法?
答案 0 :(得分:0)
你有没有看过insert_batch()
?请在此处查看Documentation。
您可以解析csv并构建一个这样的数组
$insert_array = array();
foreach($myCSV as $item)
{
$insert_array[] = array('db_field1' => $item->value1,
'db_field2' => $item->value2);
}
$this->db->insert_batch('mytable', $insert_array);
这将运行如下所示的查询:
INSERT INTO mytable (db_field1, db_field2) VALUES ('item1value1', 'item1value2'), ('item2value1', 'item2value2');