4.9.3 • Published 1 year ago

dbgate-query-splitter v4.9.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

NPM version

dbgate-query-splitter

Splits long SQL query into into particular statements. Designed to have zero dependencies and to be fast. Also supports nodejs-streams.

Supports following SQL dialects:

  • MySQL
  • PostgreSQL
  • SQLite
  • Microsoft SQL Server

Usage

import {
  splitQuery,
  mysqlSplitterOptions,
  mssqlSplitterOptions,
  postgreSplitterOptions,
} from "dbgate-query-splitter";

const output = splitQuery(
  "SELECT * FROM `table1`;SELECT * FROM `table2`;",
  mysqlSplitterOptions
);

// output is ['SELECT * FROM `table1`', 'SELECT * FROM `table2`']

Streaming support in nodejs

Function splitQueryStream accepts input stream and query options. Result is object stream, each object for one splitted query. From version 4.9.0, piping byline stream is not required.

const {
  mysqlSplitterOptions,
  mssqlSplitterOptions,
  postgreSplitterOptions,
} = require("dbgate-query-splitter");
const {
  splitQueryStream,
} = require("dbgate-query-splitter/lib/splitQueryStream");
const fs = require("fs");

const fileStream = fs.createReadStream("INPUT_FILE_NAME", "utf-8");
const splittedStream = splitQueryStream(fileStream, mysqlSplitterOptions);

Return rich info

By default, string array is returned. However, if you need to return row/column number information for splitted commands, use returnRichInfo option:

import { splitQuery, mysqlSplitterOptions } from "dbgate-query-splitter";

const output = splitQuery("SELECT * FROM `table1`;SELECT * FROM `table2`;", {
  ...mysqlSplitterOptions,
  returnRichInfo: true,
});

Output is:

[
    {
        text: 'SELECT * FROM `table1`',
        start: { position: 0, line: 0, column: 0 },
        end: { position: 22, line: 0, column: 22 },
        trimStart: { position: 0, line: 0, column: 0 },
        trimEnd: { position: 22, line: 0, column: 22 }
    },
    {
        text: 'SELECT * FROM `table2`',
        start: { position: 23, line: 0, column: 23 },
        end: { position: 46, line: 1, column: 22 },
        trimStart: { position: 24, line: 1, column: 0 },
        trimEnd: { position: 46, line: 1, column: 22 }
    }
]

Contributing

Please run tests before pushing any changes.

yarn test

Supported syntax

  • Comments
  • Dollar strings (PostgreSQL)
  • GO separators (MS SQL)
  • Custom delimiter, setby DELIMITER keyword (MySQL)
4.9.3

1 year ago

4.9.2

2 years ago

4.9.1

2 years ago

4.9.0

2 years ago

4.8.4-alpha.3

2 years ago

4.8.4

2 years ago

4.9.0-alpha.1

2 years ago

4.7.4-alpha.12

2 years ago

4.7.4-alpha.10

2 years ago

4.7.4-alpha.15

2 years ago

4.7.4-alpha.16

2 years ago

4.7.4-alpha.14

2 years ago

4.7.2

2 years ago

4.7.4

2 years ago

4.7.3

2 years ago

4.7.4-alpha.1

2 years ago

4.7.4-alpha.3

2 years ago

4.7.4-alpha.2

2 years ago

4.7.4-alpha.8

2 years ago

4.7.4-alpha.7

2 years ago

4.8.4-alpha.2

2 years ago

4.8.4-alpha.1

2 years ago

4.8.1

2 years ago

4.8.0

2 years ago

4.8.3

2 years ago

4.8.2

2 years ago

4.7.3-alpha.3

2 years ago

4.7.3-alpha.5

2 years ago

4.7.3-alpha.2

2 years ago

4.7.1

2 years ago

4.6.3

2 years ago

4.6.2

2 years ago

4.4.4

2 years ago

4.5.0

2 years ago

4.7.0

2 years ago

4.6.1

2 years ago

4.4.3

2 years ago

4.6.0

2 years ago

4.5.1

2 years ago

4.4.2

2 years ago

4.4.5-alpha.1

2 years ago

4.4.1

2 years ago

4.4.0

2 years ago

4.3.4

3 years ago

4.4.0-alpha.2

3 years ago

4.4.0-alpha.1

3 years ago

4.3.3

3 years ago

4.3.2

3 years ago

4.3.1

3 years ago

4.3.0

3 years ago

4.2.8

3 years ago

4.2.7

3 years ago

4.2.6

3 years ago

4.2.5

3 years ago

4.2.4

3 years ago