# sql-formatter **Repository Path**: fork-class/sql-formatter ## Basic Information - **Project Name**: sql-formatter - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2022-04-29 - **Last Updated**: 2022-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SQL Formatter [![NPM version](https://img.shields.io/npm/v/sql-formatter.svg)](https://npmjs.com/package/sql-formatter) [![Build Status](https://travis-ci.org/zeroturnaround/sql-formatter.svg?branch=master)](https://travis-ci.org/zeroturnaround/sql-formatter) [![Coverage Status](https://coveralls.io/repos/github/zeroturnaround/sql-formatter/badge.svg?branch=master)](https://coveralls.io/github/zeroturnaround/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. SQL formatter supports the following dialects: - **sql** - [Standard SQL][] - **mariadb** - [MariaDB][] - **mysql** - [MySQL][] - **postgresql** - [PostgreSQL][] - **db2** - [IBM DB2][] - **plsql** - [Oracle PL/SQL][] - **n1ql** - [Couchbase N1QL][] - **redshift** - [Amazon Redshift][] - **spark** - [Spark][] - **tsql** - [SQL Server Transact-SQL][tsql] It does not support: - Stored procedures. - Changing of the delimiter type to something else than `;`. → [Try the demo.](https://zeroturnaround.github.io/sql-formatter/) ## Install Get the latest version from NPM: ```sh npm install sql-formatter ``` ## Usage as library ```js import { format } from 'sql-formatter'; console.log(format('SELECT * FROM tbl')); ``` This will output: ```sql SELECT * FROM tbl ``` You can also pass in configuration options: ```js format('SELECT * FROM tbl', { language: 'spark', // Defaults to "sql" (see the above list of supported dialects) indent: ' ', // Defaults to two spaces uppercase: bool, // Defaults to false (not safe to use when SQL dialect has case-sensitive identifiers) linesBetweenQueries: 2, // Defaults to 1 }); ``` ### Placeholders replacement ```js // Named placeholders format("SELECT * FROM tbl WHERE foo = @foo", { params: {foo: "'bar'"} })); // Indexed placeholders format("SELECT * FROM tbl WHERE foo = ?", { params: ["'bar'"] })); ``` Both result in: ``` SELECT * FROM tbl WHERE foo = 'bar' ``` ## Usage from command line 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 {db2,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,tsql}] [-i N | -t] [-u] [--lines-between-queries N] [--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 OUTPUT File to write SQL output (defaults to stdout) -l {db2,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,tsql}, --language {db2,mariadb,mysql,n1ql,plsql,postgresql,redshift,spark,sql,tsql} SQL Formatter dialect (defaults to basic sql) -i N, --indent N Number of spaces to indent query blocks (defaults to 2) -t, --tab-indent Indent query blocks with tabs instead of spaces -u, --uppercase Capitalize language keywords --lines-between-queries N How many newlines to insert between queries (separated by ";") --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 -u ``` ```sql SELECT * FROM tbl WHERE id = 3 ``` ## 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 `