javascript - Parsning av sql-fråga till JSON


Jag letar efter ett sätt, helst ett NPM-paket, för att analysera en SQL-fråga till JSON. Jag har hittat några för SELECT-satser, men jag behöver faktiskt för UPDATE- och INSERT INTO-satser.\nTill exempel, en fråga i form av

"UPDATE "users" SET name = $2 where id in ($1)", ['new name', 1]

Resultatet bör vara något i stil med:

{ 
  action: 'UPDATE',
  entity: 'users',
  values: { name: 'new name' },
  conditions: { 'id': 1} 
}

Tack för din hjälp!

Svar #1

Välkommen till StackOverflow!

Det finns flera bibliotek där ute för att göra detta. Ett exempel är node-sql-parser. Baserat på deras readme kan du helt enkelt göra:

const { Parser } = require('node-sql-parser');
const parser = new Parser();
const ast = parser.astify('SELECT * FROM t'); // mysql sql grammer parsed by default

console.log(ast);

Och resultatet skulle vara något sådant här:

{
  "type": "select",
  "columns": "*",
  "from": [
    {
      "table": "t"
    }
  ]
}

Du kan leka med det här för att se om det motsvarar dina förväntningar: https://npm.runkit.com/node-sql-parser.

Relaterade artiklar