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.
npm install pgsql-parser
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));
// SELECT * FROM "another_table"
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));
// SELECT * FROM "another_table"
npm install -g pgsql-parser
pgsql-parser <sqlfile>
Parses the query and returns a parse object.
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> }
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.
parameter | type | description |
---|---|---|
query |
Object | Query tree obtained from parse |
Returns a normalized formatted SQL string.
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) |
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