node-mysql的批量插入

此前我批量插入都是用类似这样的命令:

sql 复制代码
sqlcmd='insert into table(field1,field2,...) values ?'
indata=[["f1v1","f2v1"],["f1v2","f2v2"],...]
mysqlconn.query(sqlcmd,[indata],(err,res)=>{
	...
	})

但是感觉不太舒服,因为要在两处写出字段顺序,命令串里是字段名,数组里是字段值,顺序不能错,否则执行结果不符合预期。

我们知道单条记录插入是可以用以下方式执行

sql 复制代码
sqlcmd='insert into table set ?'
indata={filed1:"f1v1",filed2:"f2v1"}
mysqlconn.query(sqlcmd,indata,(err,res)=>{
	...

不必关注字段顺序的key-value对顺序,数据是以json方式定义,不容易出错。

那么批量插入难道不能用json数组这种方式书写么?

sql 复制代码
sqlcmd='insert into table values ?'
indata=[{filed1:"f1v1",filed2:"f2v1"},{filed1:"f1v2",filed2:"f2v2"},...]
mysqlconn.query(sqlcmd,indata,(err,res)=>{
	...
	})

网上搜到极客笔记里一篇《MySQL如何利用Node.js进行批量插入操作》,跟这个书写方式一样,文章里的意思是没有问题,而且作者还验证了下批量的速度。

但是在我的windows环境下却只能插入第一条数据,后面的都没有生效。

应该是在命令生成的时候,只解析了第一条,以下是node-mysql格式转换结果

sql 复制代码
//mysqlstr.js
const mysql = require("mysql"); 
const sqlcmd="insert into table set ?"
const indata=[
{field1:"f1v1",field2:"f2v1"},
{field1:"f1v2",field2:"f2v2"},
]
let mysqlstr=mysql.format(sqlcmd,indata);
console.log(mysqlstr)

indata数组后面的内容被丢弃了。。。

不知道linux环境下结果是否会不一样,可惜了。

相关推荐
万岳科技系统开发15 分钟前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
冉冰学姐28 分钟前
SSM智慧社区管理系统jby69(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·管理系统·智慧社区·ssm 框架
杨超越luckly34 分钟前
HTML应用指南:利用GET请求获取中国500强企业名单,揭秘企业增长、分化与转型的新常态
前端·数据库·html·可视化·中国500强
斯普信专业组42 分钟前
构建基于MCP的MySQL智能运维平台:从开源服务端到交互式AI助手
运维·mysql·开源·mcp
Elastic 中国社区官方博客43 分钟前
Elasticsearch:Workflows 介绍 - 9.3
大数据·数据库·人工智能·elasticsearch·ai·全文检索
仍然.1 小时前
MYSQL--- 聚合查询,分组查询和联合查询
数据库
一 乐1 小时前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
啦啦啦_99991 小时前
Redis-0-业务逻辑
数据库·redis·缓存
自不量力的A同学1 小时前
Redisson 4.2.0 发布,官方推荐的 Redis 客户端
数据库·redis·缓存
Exquisite.1 小时前
Mysql
数据库·mysql