一次运行多个mysql命令而不是在codeigniter中顺序运行?
Posted
技术标签:
【中文标题】一次运行多个mysql命令而不是在codeigniter中顺序运行?【英文标题】:Running multiple mysql commands at once instead of sequentially in code igniter? 【发布时间】:2016-05-22 16:03:42 【问题描述】:所以我正在处理现有的代码库,该函数从 csv 中获取每一行,格式化数据,然后将其插入到数据库中。对于 CSV 中的行,整个过程大约需要 20 分钟。但是,如果我保持所有内容相同并删除实际执行数据库条目的行
$this->db->replace('my_table', $myObject);
整个代码运行大约需要 2 秒。所以我想知道是否可以存储所有对象,然后一次将它们全部分配给数据库?我正在考虑进行 1 次 sql 调用而不是数千次。想法?
【问题讨论】:
【参考方案1】:你看过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');
【讨论】:
以上是关于一次运行多个mysql命令而不是在codeigniter中顺序运行?的主要内容,如果未能解决你的问题,请参考以下文章
MongoTemplate 一次更新多个文档而不使用 saveAll() 或循环
MTLSharedEventListener 块在命令缓冲区调度之前调用而不是在运行中