2017 © Pedro Peláez
 

library sql-splitter

A simple facility to split SQL files into individual queries - supports MySQL, PostgreSQL and Microsoft SQL Server

image

kodus/sql-splitter

A simple facility to split SQL files into individual queries - supports MySQL, PostgreSQL and Microsoft SQL Server

  • Friday, May 19, 2017
  • by mindplay.dk
  • Repository
  • 1 Watchers
  • 1 Stars
  • 359 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 2 Open issues
  • 2 Versions
  • 32 % Grown

The README.md

TSParser / SQL Statement Parser

A simple parser to split multiple statement SQL queries to separated statements for MySQL, PostgreSQL and Microsoft SQL Server, (*1)

What does it do and which database engines are supported?

It supports MySQL, PostgreSQL and Microsoft SQL Server. Our parser splits multi-statement SQL queries into single statements., (*2)

Install via npm

npm install --save tsparser, (*3)

Import TSParser to your project

import {TSParser} from 'TSParser', (*4)

TSParser.parse() function description

static parse(query: string, dbType: string, delimiter: string): Array<string> {
        ...
    }

It expects 3 parameters ;, (*5)

query : SQL query, (*6)

dbType : mysql, pg or mssql, (*7)

delimiter: semicolon (;) for MySQL and PostgreSQL, 'GO' for Microsoft SQL Server, (*8)

TSParser can parse;, (*9)

SQL Queries, (*10)

Stored procedures, functions, views, etc.., (*11)

PostgreSQL's tags (like $mytag$ ), (*12)

MySQL's 'DELIMITER’, (*13)

MySQL Example

In MySQL, semicolon (;) is default delimiter., (*14)

    var mysqlQueriesBasic : string = 'SELECT * FROM users;SELECT * FROM user_details;'
    var mysqlStatements = TSParser.parse(mysqlQueriesBasic, 'mysql', ';');
    mysqlStatements.forEach(statement => {
            console.log(statement + '\n-----------');
        });

It will return an array with 2 items, items are;, (*15)

SELECT * FROM users, (*16)

SELECT * FROM user_details, (*17)

MySQL Stored Procedure and Regular Queries

    DELIMITER //
    CREATE PROCEDURE country_hos(IN con CHAR(20))
    BEGIN
        SELECT Name, HeadOfState FROM Country
        WHERE Continent = con;
    END //
    DELIMITER ;
    SELECT * FROM users;
    SELECT * FROM user_details;

It will return an array with 3 items, items are;, (*18)

  CREATE PROCEDURE country_hos(IN con CHAR(20))
  BEGIN
      SELECT Name, HeadOfState FROM Country
      WHERE Continent = con;
  END

SELECT * FROM users, (*19)

SELECT * FROM user_details, (*20)

PostgreSQL Example

In PostgreSQL, semicolon (;) is default delimiter., (*21)

    var postgreSQLQueriesBasic : string = 'SELECT * FROM users;SELECT * FROM user_details;'
    var pgStatements = TSParser.parse(postgreSQLQueriesBasic, 'pg', ';');
    pgStatements.forEach(statement => {
            console.log(statement + '\n-----------');
    });

This will return an array with 2 items, items are;, (*22)

SELECT * FROM users, (*23)

SELECT * FROM user_details, (*24)

PostgreSQL Function and Regular Queries

   CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
        BEGIN
                RETURN i + 1;
        END;
$$ LANGUAGE plpgsql;
SELECT * FROM users;
SELECT * FROM user_details;

It will return an array with 3 items, items are;, (*25)

  CREATE OR REPLACE FUNCTION increment(i integer) RETURNS integer AS $$
        BEGIN
                RETURN i + 1;
        END;
$$ LANGUAGE plpgsql

SELECT * FROM users, (*26)

SELECT * FROM user_details, (*27)

Microsoft SQL Server Example

In Microsoft SQL Server, GO keyword is default delimiter., (*28)

Unlike MySQL and PostgreSQL, if you don’t use a delimiter ( which is ‘GO’ ), MSSQL will execute it as a multi-statement query. MySQL and PostgreSQL will throw syntax exception., (*29)

    var postgreSQLQueriesBasic : string = ‘SELECT * FROM users GO SELECT * FROM user_details;’
    var pgStatements = TSParser.parse(postgreSQLQueriesBasic, ‘pg’, ‘;’);
    pgStatements.forEach(statement => {
            console.log(statement + ‘\n—————‘);
    });

This will return an array with 2 items, items are;, (*30)

SELECT * FROM users, (*31)

SELECT * FROM user_details, (*32)

Microsoft SQL Server Stored Procedure and Regular Queries

  CREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)
AS
SELECT * 
FROM Person.Address
WHERE City = @City;
GO
SELECT * FROM users;
GO
SELECT * FROM user_details;

It will return an array with 3 items, items are;, (*33)

CREATE PROCEDURE dbo.uspGetAddress @City nvarchar(30)
AS
SELECT * 
FROM Person.Address
WHERE City = @City;

SELECT * FROM users, (*34)

SELECT * FROM user_details, (*35)

The Versions

19/05 2017

dev-php-port

dev-php-port

A simple facility to split SQL files into individual queries - supports MySQL, PostgreSQL and Microsoft SQL Server

  Sources   Download

MIT

The Requires

  • php ^7.0

 

The Development Requires

19/05 2017

1.0.0

1.0.0.0

A simple facility to split SQL files into individual queries - supports MySQL, PostgreSQL and Microsoft SQL Server

  Sources   Download

MIT

The Requires

  • php ^7.0

 

The Development Requires