Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/doctrine/sql-formatter
A lightweight php class for formatting sql statements. Handles automatic indentation and syntax highlighting.
https://github.com/doctrine/sql-formatter
Last synced: 28 days ago
JSON representation
A lightweight php class for formatting sql statements. Handles automatic indentation and syntax highlighting.
- Host: GitHub
- URL: https://github.com/doctrine/sql-formatter
- Owner: doctrine
- License: mit
- Created: 2020-03-22T14:47:48.000Z (over 4 years ago)
- Default Branch: 1.2.x
- Last Pushed: 2024-02-22T20:09:04.000Z (9 months ago)
- Last Synced: 2024-04-14T01:33:21.104Z (7 months ago)
- Language: HTML
- Homepage:
- Size: 610 KB
- Stars: 1,598
- Watchers: 8
- Forks: 16
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# SqlFormatter
A lightweight php package for formatting sql statements.
It can automatically indent and add line breaks in addition to syntax
highlighting.## History
This package is a fork from https://github.com/jdorn/sql-formatter
Here is what the original History section says:> I found myself having to debug auto-generated SQL statements all the time and
> wanted some way to easily output formatted HTML without having to include a
> huge library or copy and paste into online formatters.> I was originally planning to extract the formatting code from PhpMyAdmin,
> but that was 10,000+ lines of code and used global variables.> I saw that other people had the same problem and used Stack Overflow user
> losif's answer as a starting point. http://stackoverflow.com/a/3924147― @jdorn
## Usage
The `SqlFormatter` class has a method `format` which takes an SQL string as
input and returns a formatted block.Sample usage:
```php
= NOW()) )
GROUP BY Column1 ORDER BY Column3 DESC LIMIT 5,10";echo (new SqlFormatter())->format($query);
```Output:
When you run php under cli and instantiated `SqlFormatter` without argument, highlighted with `CliHighlighter`.
SqlFormatter constructor takes `Highlighter` implementations. `HtmlHighlighter` etc.
### Formatting Only
If you don't want syntax highlighting and only want the indentations and
line breaks, pass in a `NullHighlighter` instance as the second parameter.This is useful for outputting to error logs or other non-html formats.
```php
format($query);
```Output:
```
SELECT
count(*),
`Column1`,
`Testing`,
`Testing Three`
FROM
`Table1`
WHERE
Column1 = 'testing'
AND (
(
`Column2` = `Column3`
OR Column4 >= NOW()
)
)
GROUP BY
Column1
ORDER BY
Column3 DESC
LIMIT
5, 10
```### Syntax Highlighting Only
There is a separate method `highlight` that preserves all original whitespace
and just adds syntax highlighting.This is useful for sql that is already well formatted and just needs to be a
little easier to read.```php
highlight($query);
```Output:
### Compress Query
The `compress` method removes all comments and compresses whitespace.
This is useful for outputting queries that can be copy pasted to the command
line easily.```sql
-- This is a comment
SELECT
/* This is another comment
On more than one line */
Id #This is one final comment
as temp, DateCreated as Created FROM MyTable;
``````php
echo (new SqlFormatter())->compress($query);
```Output:
```sql
SELECT Id as temp, DateCreated as Created FROM MyTable;
```