美文网首页
mysql存储过程批量处理数据

mysql存储过程批量处理数据

作者: 攸凝渊 | 来源:发表于2019-05-11 16:38 被阅读0次

    最近在学习Node.js的mysql模块,遇到一个问题:
    如何调用存储过程把批量数据一次性写入表中?
    想传入一个数组作为参数,但mysql存储过程不支持。
    可以使用for循环,但性能差。
    于是,想了一个方法:多语句执行。

    现有一个user表,包含id(自增),uname,age三个字段。
    存储过程MultiProc,接收两个参数(uname, age),作用是往user表插入一条数据。
    现在要批量插入多条数据,比如

    [
        {
            "uname": "alice",
            "age": 18
        },
        {
            "uname": "bob",
            "age": 20
        },
       ...
    ]
    

    用Node.js 可以这样做:

    function (datas, callback) {
        let len = datas.length;
        let sql = "call MultiProc(?, ?); ";
        let sqls = sql.repeat(len); //重复语句
        let params = [];
        for (let i = 0; i < len; i++) {
            let data = datas[i];
            params.push(data.uname, data.age);
        }
        query(sqls, params, callback);
    }
    

    简单讲,就是重复多次待执行的sql语句,把数据“平铺”放在一个数组中。

    相关文章

      网友评论

          本文标题:mysql存储过程批量处理数据

          本文链接:https://www.haomeiwen.com/subject/blwxaqtx.html