sql-formatter-plus
Version:
Formats whitespace in a SQL query to make it more readable
114 lines (81 loc) • 2.76 kB
Markdown
# SQL Formatter Plus
A fork of [SQL Formatter](https://github.com/zeroturnaround/sql-formatter) with some extra bug fixes and features.
Fixes:
- Fixed formatting issue with unicode characters
- Fixed comment formatting for non-unix line endings
- Fixed null reference on input tokenization
- Fixed indentation of multiple statements
New Features:
- Convert keywords to uppercase with the `uppercase` config option
- Configurable number of line breaks between queries with the `linesBetweenQueries` config option
**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 [Standard SQL][], [Couchbase N1QL][], [IBM DB2][] and [Oracle PL/SQL][] dialects.
[Try the demo.](https://kufii.github.io/sql-formatter-plus//)
## Install
Get the latest version from NPM:
```shell
npm install sql-formatter
```
## Usage
```javascript
import sqlFormatter from 'sql-formatter-plus';
console.log(sqlFormatter.format('SELECT * FROM table1'));
```
This will output:
```sql
SELECT
*
FROM
table1
```
You can also pass in configuration options:
```javascript
sqlFormatter.format('SELECT *', {
language: 'n1ql', // Defaults to "sql"
indent: ' ', // Defaults to two spaces,
uppercase: true, // Defaults to false
linesBetweenQueries: 2 // Defaults to 1
});
```
Currently just four SQL dialects are supported:
- **sql** - [Standard SQL][]
- **n1ql** - [Couchbase N1QL][]
- **db2** - [IBM DB2][]
- **pl/sql** - [Oracle PL/SQL][]
### Placeholders replacement
```javascript
// 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:
```sql
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
```shell
# run linter and tests
npm run check
```
...and you're ready to poke us with a pull request.
## License
[MIT](https://github.com/zeroturnaround/sql-formatter/blob/master/LICENSE)
[php library]: https://github.com/jdorn/sql-formatter
[standard sql]: https://en.wikipedia.org/wiki/SQL:2011
[couchbase n1ql]: http://www.couchbase.com/n1ql
[ibm db2]: https://www.ibm.com/analytics/us/en/technology/db2/
[oracle pl/sql]: http://www.oracle.com/technetwork/database/features/plsql/index.html