npm explorer

sql-formatter

v9.0.0-beta4TypeScript

Format whitespace in a SQL query to make it more readable

sqlformatterformatn1qlredshiftsinglestoredbsparkwhitespacemysqlmariadb
0/weekUpdated 3 weeks agoMITUnpacked: 1.7 MB
Published by nene
npm install sql-formatter
RepositoryHomepagenpm

SQL Formatter ![NPM version](https://npmjs.com/package/sql-formatter) !Build status ![Coverage Status](https://coveralls.io/github/sql-formatter-org/sql-formatter?branch=master)

SQL Formatter is a JavaScript library for pretty-printing SQL queries.

It started as a port of a [PHP Library][], but has since considerably diverged.

It supports various SQL dialects:
GCP BigQuery, Clickhouse, IBM DB2, DuckDB, Apache Hive, MariaDB, MySQL, TiDB, Couchbase N1QL, Oracle PL/SQL, PostgreSQL, Amazon Redshift, SingleStoreDB, Snowflake, Spark, SQL Server Transact-SQL, Trino (and Presto).
See language option docs for more details.

It does not support:

- Stored procedures.
- Changing of the delimiter type to something else than ;.

→ Try the demo.

Install

Get the latest version from NPM:

``sh
npm install sql-formatter
`

Also available with yarn:

`sh
yarn add sql-formatter
`

Usage

$3

`js
import { format } from 'sql-formatter';

console.log(format('SELECT * FROM tbl', { language: 'mysql' }));
`

This will output:

`sql
SELECT
*
FROM
tbl
`

You can also pass in configuration options:

`js
format('SELECT * FROM tbl', {
language: 'spark',
tabWidth: 2,
keywordCase: 'upper',
linesBetweenQueries: 2,
});
`

$3

You can disable the formatter for a section of SQL by surrounding it with disable/enable comments:

`sql
/ sql-formatter-disable /
SELECT * FROM tbl1;
/ sql-formatter-enable /
SELECT * FROM tbl2;
`

which produces:

`sql
/ sql-formatter-disable /
SELECT * FROM tbl1;
/ sql-formatter-enable /
SELECT
*
FROM
tbl2;
`

The formatter doesn't even parse the code between these comments.
So in case there's some SQL that happens to crash SQL Formatter,
you can comment the culprit out (at least until the issue gets
fixed in SQL Formatter).

$3

In addition to formatting, this library can also perform placeholder replacement in prepared SQL statements:

`js
format('SELECT * FROM tbl WHERE foo = ?', {
params: ["'bar'"],
});
`

Results in:

`sql
SELECT
*
FROM
tbl
WHERE
foo = 'bar'
`

For more details see docs of params option.

$3

The CLI tool will be installed under sql-formatter
and may be invoked via
npx sql-formatter:

`sh
sql-formatter -h
`

`
usage: sql-formatter [-h] [-o OUTPUT] \
[-l {bigquery,clickhouse,db2,db2i,hive,mariadb,mysql,n1ql,plsql,postgresql,redshift,singlestoredb,snowflake,spark,sql,sqlite,tidb,transactsql,trino,tsql}] [-c CONFIG] [--version] [FILE]

SQL Formatter

positional arguments:
FILE Input SQL file (defaults to stdin)

optional arguments:
-h, --help show this help message and exit
-o, --output OUTPUT
File to write SQL output (defaults to stdout)
--fix Update the file in-place
-l, --language {bigquery,clickhouse,db2,db2i,hive,mariadb,mysql,n1ql,plsql,postgresql,redshift,singlestoredb,snowflake,spark,sql,sqlite,tidb,trino,tsql}
SQL dialect (defaults to basic sql)
-c, --config CONFIG
Path to config JSON file or json string (will find a file named '.sql-formatter.json' or use default configs if unspecified)
--version show program's version number and exit
`

By default, the tool takes queries from stdin and processes them to stdout but
one can also name an input file name or use the
--output option.

`sh
echo 'select * from tbl where id = 3' | sql-formatter
`

`sql
select
*
from
tbl
where
id = 3
`

The tool also accepts a JSON config file named .sql-formatter.json in the current or any parent directory, or with the --config option that takes this form:

`json
{
"language": "spark",
"tabWidth": 2,
"keywordCase": "upper",
"linesBetweenQueries": 2
}
`

All fields are optional and all fields that are not specified will be filled with their default values.

$3

- language the SQL dialect to use (when using format()).
-
dialect the SQL dialect to use (when using formatDialect() since version 12).
-
tabWidth amount of indentation to use.
-
useTabs to use tabs for indentation.
-
keywordCase uppercases or lowercases keywords.
-
dataTypeCase uppercases or lowercases data types.
-
functionCase uppercases or lowercases function names.
-
identifierCase uppercases or lowercases identifiers. (experimental!)
-
indentStyle defines overall indentation style. (deprecated!)
-
logicalOperatorNewline newline before or after boolean operator (AND, OR, XOR).
-
expressionWidth maximum number of characters in parenthesized expressions to be kept on single line.
-
linesBetweenQueries how many newlines to insert between queries.
-
denseOperators packs operators densely without spaces.
-
newlineBeforeSemicolon places semicolon on separate line.
-
params collection of values for placeholder replacement.
-
paramTypes specifies parameter placeholders types to support.

$3

If you don't use a module bundler, clone the repository, run npm install and grab a file from /dist directory to use inside a sql-formatter - npm explorer

Dist Tags

beta19.0.0-beta1
beta29.0.0-beta2
beta39.0.0-beta3
beta49.0.0-beta4
beta15.5.0-beta.2
latest15.7.0