prettier-sql
prettier-sql copied to clipboard
[ARCHIVED] Please use https://github.com/sql-formatter-org/sql-formatter
[ARCHIVED] Please use https://github.com/sql-formatter-org/sql-formatter
SQL Formatter

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, IBM DB2, Apache Hive, MariaDB, MySQL, Couchbase N1QL, Oracle PL/SQL, PostgreSQL, Amazon Redshift, Spark, SQL Server Transact-SQL. See language option docs for more details.
It does not support:
- Stored procedures.
- Changing of the delimiter type to something else than
;.
Install
Get the latest version from NPM:
npm install sql-formatter
Also available with yarn:
yarn add sql-formatter
Usage
Usage as library
import { format } from 'sql-formatter';
console.log(format('SELECT * FROM tbl'));
This will output:
SELECT
*
FROM
tbl
You can also pass in configuration options:
format('SELECT * FROM tbl', {
language: 'spark',
tabWidth: 2,
keywordCase: 'upper',
linesBetweenQueries: 2,
});
Placeholders replacement
In addition to formatting, this library can also perform placeholder replacement in prepared SQL statements:
format('SELECT * FROM tbl WHERE foo = ?', {
params: ["'bar'"],
});
Results in:
SELECT
*
FROM
tbl
WHERE
foo = 'bar'
For more details see docs of params option.
Usage from command line
The CLI tool will be installed under sql-formatter
and may be invoked via npx sql-formatter:
sql-formatter -h
usage: sql-formatter [-h] [-o OUTPUT] \
[-l {bigquery,db2,hive,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,sqlite,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)
-l, --language {bigquery,db2,hive,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,sqlite,tsql}
SQL dialect (defaults to standard sql)
-c, --config CONFIG
Path to config json file (will 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.
echo 'select * from tbl where id = 3' | sql-formatter
select
*
from
tbl
where
id = 3
The tool also accepts a JSON config file with the --config option that takes this form:
{
"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.
Configuration options
languagethe SQL dialect to use.tabWidthamount of indentation to use.useTabsto use tabs for indentation.keywordCaseuppercases or lowercases keywords.indentStyledefines overall indentation style.multilineListsdetermines when to break lists of items to multiple lines.logicalOperatorNewlinenewline before or after boolean operator (AND, OR, XOR).aliasAsenforces or forbids use of AS keyword for aliases.tabulateAliasaligns column aliases vertically.commaPositionwhere to place the comma in column lists.newlineBeforeOpenParenplacement of opening parenthesis.newlineBeforeCloseParenplacement of closing parenthesis.expressionWidthmaximum number of characters in parenthesized expressions to be kept on single line.linesBetweenQuerieshow many newlines to insert between queries.denseOperatorspacks operators densely without spaces.newlineBeforeSemicolonplaces semicolon on separate line.paramscollection of values for placeholder replacement.
Usage without NPM
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 <script> tag.
This makes SQL Formatter available as a global variable window.sqlFormatter.
Usage in editors
Contributing
Please see CONTRIBUTING.md
You can read more about how the library works in DOC.md
License
MIT