一次运行多个mysql命令而不是在代码点火器中顺序执行?

时间:2016-02-11 18:03:52

标签: php mysql codeigniter csv

所以我正在处理现有的代码库,该函数从csv获取每一行,格式化数据然后将其插入到数据库中。使用CSV中的行,整个过程大约需要20分钟。但是,如果我保持一切相同并删除实际执行数据库条目的行

$this->db->replace('my_table', $myObject);

整个代码大约需要2秒钟。所以我想知道是否可以存储所有对象,然后将它们全部分配给DB?我正在考虑做一次sql调用,而不是成千上万。想法?

1 个答案:

答案 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');