Phalcon批量插入数据记录
【Phalcon批量插入数据记录】在开发 酷瓜云课堂(开源知识付费解决方案)的过程中,需要一次插入几千条数据,官方文档里没有相关批量操作的指引,自己动手才能丰衣足食。
Phalocn 默认的 Model 和 PHQL 是不支持批量插入记录的,如果用循环插入几百上千成万的记录,那效率不知道有多低。使用Phalcon底层的 db 操作可以支持原生 SQL,拼装一下 SQL 语句就可以批量插入记录了。
语句拼装函数
/**
* 批量插入SQL
*
* @param string $table
* @param array $rows
* @return false|string
*/
function kg_batch_insert_sql($table, $rows = [])
{
if (count($rows) == 0) return false;
$fields = implode(',', array_keys($rows[0]));
$values = [];
foreach ($rows as $row) {
$values[] = sprintf('(%s)', implode(',', $row));
}$values = implode(',', $values);
return sprintf("INSERT INTO %s (%s) VALUES %s", $table, $fields, $values);
}
使用方法案例
$logModel = new QQDeliverLogModel();
$table = $logModel->getSource();
$rows = [];
$createTime = time();
foreach ($groupUsers as $groupUser) {
$rows[] = [
'task_id' => $task->id,
'group_id' => $groupUser->group_id,
'user_id' => $groupUser->user_id,
'create_time' => $createTime,
];
}$sql = kg_batch_insert_sql($table, $rows);
try {
$this->db->begin();
$this->db->execute($sql);
$this->db->commit();
} catch (\Exception $e) {
$this->db->rollback();
}
推荐阅读
- Arcgis根据经纬度批量提取属性值
- 【排序】插入排序算法
- 批量获取win10的聚焦锁屏图片
- 2020-08-13|2020-08-13 同花顺证书批量下载
- Metal|Metal 案例03(大批量顶点数据的图形渲染)
- Vue+jszip+file-saver|Vue+jszip+file-saver 实现el-table中qrcode生成的二维码图片批量打包成zip下载
- Jquery表单序列化json+批量判断是否为空
- 十二种排序(冒泡、插入、归并、快速排序等包含希尔和计数排序)
- 使用Mysql|使用Mysql 存储过程,批量插入100万条数据
- 冒泡排序、插入排序、快速排序、堆排序、归并排序总结