[使用javascript构造sql插入语句字符串

问题描述 投票:0回答:1

想要有一个插入语句而不是在循环中生成。

是否有更简单的方法来解决此问题? ES6还是lodash?

注意:由于JSON结构具有多种供应商类型,因此本质上是动态的,因此无法更改。因此,出现了两个循环。数据类型是字符串。

JSFIDDLE LINK

    for (var key in vendorObject) {
      if (vendorObject.hasOwnProperty(key)) {
        let newObject = vendorObject[key];
        for (let i = 0; i < newObject.length; i++) {

          for (const vendorKey in newObject[i]) {
            if (newObject[i].hasOwnProperty(vendorKey)) {
              keys.push(vendorKey);
              values.push("'" + newObject[i][vendorKey] + "'");
            }
          }
let insertStatement = `INSERT INTO INSERT INTO mytable(` + keys.toString() + `) VALUES (` + values.toString() + ` );`;
              console.log(insertStatement);
        }
      }
    }
javascript lodash
1个回答
0
投票

这是我的方法。首先将数组展平,然后使用map

生成插入语句
const insertStatement = Object.values(vendorObject).flat().map((x, i) => (i === 0? `INSERT INTO mytable(${Object.keys(x).join(', ')}) VALUES ` : '') + `("${Object.values(x).join('", "')}")`).join(', ') + ';'
console.log(insertStatement)
© www.soinside.com 2019 - 2024. All rights reserved.