Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@gwax/sql-formatter

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@gwax/sql-formatter

Format whitespace in a SQL query to make it more readable

  • 3.0.3
  • latest
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
67
decreased by-21.18%
Maintainers
1
Weekly downloads
 
Created
Source

SQL Formatter NPM version Build Status Coverage Status

SQL Formatter is a JavaScript library and command line tool for pretty-printing SQL queries. It started as a Javascript port of a PHP Library, but has diverged considerably, and been forked/joined multiple times in the past. The current formatter (@gwax/sql-formatter) forked from zeroturnaround/sql-formatter with code consolidated from kufii/sql-formatter-plus and a number of other forks scattered around GitHub.

SQL Formatter supports Standard SQL, Couchbase N1QL, IBM DB2, Oracle PL/SQL, Amazon Redshift, and Spark dialects.

Try the demo.

Install

Get the latest version from NPM:

npm install @gwax/sql-formatter

Command Line Interface

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

npx @gwax/sql-formatter -h
usage: sql-formatter [-h] [-v] [-f FILE] [-o OUTPUT]
                     [-l {db2,n1ql,pl/sql,plsql,redshift,spark,sql}]
                     [-i N | -t] [-u] [--lines-between-queries N]


SQL Formatter

Optional arguments:
  -h, --help            Show this help message and exit.
  -v, --version         Show program's version number and exit.
  -f FILE, --file FILE  Input SQL file (defaults to stdin)
  -o OUTPUT, --output OUTPUT
                        File to write SQL output (defaults to stdout)
  -l {db2,n1ql,pl/sql,plsql,redshift,spark,sql}, --langauge {db2,n1ql,pl/sql,plsql,redshift,spark,sql}
                        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 ";")

By default, the tool takes queries from stdin and processes them to stdout but the -f/--file and -o/--output flags can be used to alter this behavior.

echo 'select * from tbl where id = 3' | npx @gwax/sql-formatter -u
SELECT
  *
FROM
  tbl
WHERE
  id = 3

Usage

import sqlFormatter from '@gwax/sql-formatter';

console.log(sqlFormatter.format('SELECT * FROM tbl'));

This will output:

SELECT
  *
FROM
  tbl

You can also pass in configuration options:

sqlFormatter.format('SELECT * FROM tbl', {
  language: 'spark', // Defaults to "sql"
  indent: '    ', // Defaults to two spaces
  uppercase: bool, // Defaults to false
  linesBetweenQueries: 2, // Defaults to 1
});

Currently just six SQL dialects are supported:

Placeholders replacement

// Named placeholders
sqlFormatter.format('SELECT * FROM tbl WHERE foo = @foo', {
  params: { foo: "'bar'" },
});

// Indexed placeholders
sqlFormatter.format('SELECT * FROM tbl WHERE foo = ?', {
  params: ["'bar'"],
});

Both result in:

SELECT
  *
FROM
  tbl
WHERE
  foo = 'bar'

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.

Contributing

Make sure to run all checks:

npm run check

...and you're ready to poke us with a pull request.

License

MIT

Keywords

FAQs

Package last updated on 13 Jul 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc