TypeScript中如何从对象数组生成单条批量INSERT SQL语句
批量INSERT语句拼接实现方案
核心实现逻辑
不需要循环生成完整INSERT语句,仅需遍历数组生成每个元素对应的数值组字符串,再将所有数值组用逗号拼接后和固定INSERT前缀拼接即可,修正后的代码如下:
public async insert() { const dataArr = [{ cod: 'CO', file: 'CO_SER.csv', exists: 1 },{ cod: 'ES', file: 'ES_INS.csv', exists: 1 }]; // 生成每个元素对应的数值片段 const valueSegments = dataArr.map(elem => { return `("${elem.cod}", "${elem.file}", ${elem.exists})` }); // 拼接为完整批量插入SQL const insertSql = `INSERT INTO databaseID VALUES ${valueSegments.join(', ')}`; // 此处可执行insertSql完成单次插入 }
注意事项
- 上述代码仅适配当前演示场景,生产环境禁止直接拼接字符串生成SQL,存在SQL注入风险,建议使用项目数据库驱动自带的批量插入API、参数化查询能力,或是TypeORM、Prisma等ORM框架提供的批量写入方法,安全性更高。
- 新增数组非空判断逻辑,避免数组为空时生成无效SQL语句。
内容的提问来源于stack exchange,提问作者main
相关产品推荐
相关产品推荐

