pgsql-parser 
The real PostgreSQL parser for nodejs. The primary objective of this module is to provide symmetric parsing and deparsing of SQL statements. With this module you can modify parts of a SQL query statement and serialize the query tree back into a formatted SQL statement. It uses the real PostgreSQL parser.
The main functionality provided by this module is deparsing, which PostgreSQL does not have internally.
Installation
npm install pgsql-parser
Parser Example
Rewrite part of a SQL query:
const { parse, deparse } = require('pgsql-parser');
const stmts = parse('SELECT * FROM test_table');
stmts[0].RawStmt.stmt.SelectStmt.fromClause[0].RangeVar.relname = 'another_table';
console.log(deparse(stmts));
Deparser Example
The deparser can be used separately, which removes many deps required for the parser:
const { parse } = require('pgsql-parser');
const { deparse } = require('pgsql-deparser');
const stmts = parse('SELECT * FROM test_table');
stmts[0].RawStmt.stmt.SelectStmt.fromClause[0].RangeVar.relname = 'another_table';
console.log(deparse(stmts));
CLI
npm install -g pgsql-parser
usage
pgsql-parser <sqlfile>
Documentation
parser.parse(sql)
Parses the query and returns a parse object.
Parameters
parameter | type | description |
---|
query | String | SQL query |
Returns an object in the format:
{ query: <query|Object>,
error: { message: <message|String>,
fileName: <fileName|String>,
lineNumber: <line|Number>,
cursorPosition: <cursor|Number> }
parser.deparse(query)
Deparses the query tree and returns a formatted SQL statement. This function takes as input a query AST
in the same format as the query
property of on the result of the parse
method. This is the primary
functionality of this module.
Parameters
parameter | type | description |
---|
query | Object | Query tree obtained from parse |
Returns a normalized formatted SQL string.
Versions
As of PG 13, PG majors versions maintained will have a matching dedicated major npm version. Only the latest Postgres stable release receives active updates.
Our latest is built with 13-latest
branch from libpg_query
PostgreSQL Major Version | libpg_query | Status | npm |
---|
13 | 13-latest | Active development | latest |
12 | (n/a) | Not supported | |
11 | (n/a) | Not supported | |
10 | 10-latest | Not supported | @1.3.1 (tree) |
Resources
Related
Credits
License: https://github.com/zhm/pg-query-parser/blob/master/LICENSE.md
Thanks to https://github.com/zhm/pg-query-parser we've been able to start this repo and add a lot of functionality