JSFiddle - React, Tailwind, and code Playground

by Sheryl Hohman

HTML

<div style="display: block;">
  <label for="query" id="ruleslabel">Input INSERT query:</label><br>
  <textarea id="query" rows="10">INSERT INTO `devices` (`name`, `idGroup1`, `idGroup2`, `label`) VALUES
('3703-001', 16, 5, 'Meter BB #1'),
('3703-002', 12, 8, 'Meter CC #2'),
('3703-003', 12, 0, 'Meter #3'),
('3703-004', 12, 24, 'Meter building F');</textarea>
</div>

<button id="btn">Convert</button>

<div style="display: block;">
  <label for="out" id="ruleslabel">Output UPDATE query:</label><br>
  <textarea id="out" rows="10"></textarea>
</div>

CSS

textarea{
  border:1px solid #999999;
  width:100%;
  margin:5px 0;
  padding:3px;
}
button {
	margin:10px;
}

JavaScript

function substrBetween(str,before,after){
		var arr = str.split(before);
		arr.shift();
		str = arr.join(before);
		arr = str.split(after);
		str = arr.shift();
		return str;
		//return str.split(before).pop().split(after)[0];
	}

	$(document).ready(function(){
		$('#btn').click(function () {
		  var insertQuery= $('#query').val();
		  var lines = insertQuery.split('\n');
		  var header = lines[0];
		  var tableName = substrBetween(header,"INTO `","`");
		  var varNames = substrBetween(header,"(`","`)").split("`, `");
		  
		  var out = "";
		  for (i=1; i<lines.length; i++){
			var line = lines[i];
			if (line[line.length -1] == ";"){
				line = line.slice(0, -1) + ',';
			}
			var values = substrBetween(line,"(","),").split(", ");
			out += "UPDATE `"+tableName+"` SET ";
			for (j=1; j<values.length; j++){
				out += "`"+varNames[j]+"`="+values[j]+", ";
			}
			out = out.slice(0, out.length-2);
			out += " WHERE `"+varNames[0]+"`="+values[0]+";\n";
		  }
		  
		  $('#out').html(out);
		});
});