msyql大数据查询和批量插入

问题描述

有个借书表几万条数据 有个用户表 1000多条数据 需要组装一个 二位数组标记用户借了什么书
array(

array(1,1)
 array(1,2)
  array(1,3)
   array(2,1)

)
第一个表示用户id 第二个表示书本id
但是循环借书表数据量太大 不知道要如何解决

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
Db::table('book')->field(array('id'))->chunk(100, function($info) {

        foreach ($info as $v) {
              foreach ($list as $v1) {//这个list表示用户表
                  if ($v['id'] == $v1['id']) {
                      array_pust($insertData, array('user_id'=>$v1['cid'],'book_id'=>$info['id']));
                  }
              }
        }
    });

你期待的结果是什么?实际看到的错误信息又是什么?

题目描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

问题描述

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 1.5k
1 个回答

mysql有个executemany了解一下
伪代码:

sql = "insert into table(id,name) values(%s,%s)"
param = ((id, name), (id, name), (id, name))  # 此处你可以用列表生成式,param用list或者元祖组装都可以
cursor.executemany(sql,param) 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题