Skip to content

Take a string with multiple Postgres SQL statements, separated by semicolons, and split it into its constituent statements

License

Notifications You must be signed in to change notification settings

neondatabase/semicolons

Repository files navigation

semicolons

This package exists to take a string containing multiple Postgres SQL statements, separated by semicolons, and split it into its constituent statements.

This isn't trivial, because semicolons may occur in double-quoted identifiers, ordinary strings, 'escape' strings, continuation strings, dollar-quoted strings, single-line comments, and (nestable) multi-line comments, and in all these cases they do not separate statements.

Sticky RegExps are used liberally.

Developed for and used by Neon's SQL Editor. Kick the tyres there or at https://semicolons.pages.dev/.

Installation

npm install postgres-semicolons

Usage

The exported functions have comprehensive TSDoc comments in index.ts.

An example:

import * as semicolons from 'postgres-semicolons';

const sql = `BEGIN; /*/* SELECT 1; */ SELECT 2; */; SELECT ';'';'; SELECT $x$;$x$; -- COMMIT;`;
const standardConformingStrings = true; 
const splits = semicolons.parseSplits(sql, standardConformingStrings);
const queries = semicolons.nonEmptyStatements(sql, splits.positions);

console.log(queries);  // -> [ 'BEGIN', "SELECT ';'';'", 'SELECT $x$;$x$' ]

License

The code is MIT licensed.

About

Take a string with multiple Postgres SQL statements, separated by semicolons, and split it into its constituent statements

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published