Have ideas to improve npm?Join in the discussion! »

    sql-formatter
    TypeScript icon, indicating that this package has built-in type declarations

    4.0.2 • Public • Published

    SQL Formatter NPM version Build Status Coverage Status

    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:

    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:

    npm install sql-formatter

    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', // Defaults to "sql" (see the above list of supported dialects)
      indent: '    ', // Defaults to two spaces
      uppercase: bool, // Defaults to false
      linesBetweenQueries: 2, // Defaults to 1
    });

    Placeholders replacement

    // 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:

    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.

    echo 'select * from tbl where id = 3' | sql-formatter -u
    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 <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

    Install

    npm i sql-formatter

    DownloadsWeekly Downloads

    54,609

    Version

    4.0.2

    License

    MIT

    Unpacked Size

    796 kB

    Total Files

    48

    Last publish

    Collaborators

    • avatar
    • avatar
    • avatar