Создайте sql вставьте строку оператора, используя javascript - PullRequest
0 голосов
/ 27 апреля 2020

Хотелось иметь один оператор вставки, чем генерация в циклах.

Был ли более простой подход к этому решению? ES6 или loda sh?

Примечание. Невозможно изменить структуру JSON, поскольку она имеет динамический характер c с несколькими типами поставщиков. Итак, две петли входят в картину. Типы данных являются строковыми.

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);
        }
      }
    }

1 Ответ

0 голосов
/ 27 апреля 2020

Вот мой подход. Сначала сгладьте массив, затем просто сгенерируйте оператор вставки, используя 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)
...