{"id":15068762,"url":"https://github.com/vertical-blank/sql-formatter","last_synced_at":"2025-05-15T14:09:16.008Z","repository":{"id":37735307,"uuid":"176653959","full_name":"vertical-blank/sql-formatter","owner":"vertical-blank","description":"SQL formatter written with only Java Standard Library, without dependencies.","archived":false,"fork":false,"pushed_at":"2024-04-09T10:00:58.000Z","size":437,"stargazers_count":239,"open_issues_count":13,"forks_count":48,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-04-07T20:08:38.862Z","etag":null,"topics":["java","java8","sql","sql-beautifier","sql-formatter"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vertical-blank.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-20T04:33:44.000Z","updated_at":"2025-03-31T09:28:18.000Z","dependencies_parsed_at":"2024-12-14T10:11:43.312Z","dependency_job_id":null,"html_url":"https://github.com/vertical-blank/sql-formatter","commit_stats":{"total_commits":148,"total_committers":9,"mean_commits":"16.444444444444443","dds":0.07432432432432434,"last_synced_commit":"937171e5fb061617062fb7489694c1fdc4c96044"},"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertical-blank%2Fsql-formatter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertical-blank%2Fsql-formatter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertical-blank%2Fsql-formatter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vertical-blank%2Fsql-formatter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vertical-blank","download_url":"https://codeload.github.com/vertical-blank/sql-formatter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254355332,"owners_count":22057354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","java8","sql","sql-beautifier","sql-formatter"],"created_at":"2024-09-25T01:39:10.437Z","updated_at":"2025-05-15T14:09:10.996Z","avatar_url":"https://github.com/vertical-blank.png","language":"Java","readme":"# sql-formatter\n\n[![Maven Central](https://img.shields.io/maven-central/v/com.github.vertical-blank/sql-formatter.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22com.github.vertical-blank%22%20AND%20a:%22sql-formatter%22)\n![Java CI with Maven](https://github.com/vertical-blank/sql-formatter/workflows/Java%20CI%20with%20Maven/badge.svg)\n[![codecov](https://codecov.io/gh/vertical-blank/sql-formatter/branch/master/graph/badge.svg)](https://codecov.io/gh/vertical-blank/sql-formatter)\n\nJava port of great SQL formatter \u003chttps://github.com/zeroturnaround/sql-formatter\u003e.\n\nWritten with only Java Standard Library, without dependencies.\n\n[Demo](http://www.vertical-blank.com/sql-formatter/)\n\nDemo is running on Google Cloud Function, with native-compiled shared library by GraalVM.\n\nThis does not support:\n\n- Stored procedures.\n- Changing of the delimiter type to something else than ;.\n\n## Usage\n\n### Maven\n\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.github.vertical-blank\u003c/groupId\u003e\n  \u003cartifactId\u003esql-formatter\u003c/artifactId\u003e\n  \u003cversion\u003e2.0.5\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n### Gradle\n\n```gradle\nimplementation 'com.github.vertical-blank:sql-formatter:2.0.5'\n```\n\n## Examples\n\nYou can easily use `com.github.vertical_blank.sqlformatter.SqlFormatter` :\n\n```java\nSqlFormatter.format(\"SELECT * FROM table1\")\n```\n\nThis will output:\n\n```sql\nSELECT\n  *\nFROM\n  table1\n```\n\nYou can also pass `FormatConfig` object built by builder:\n\n```js\nSqlFormatter.format('SELECT * FROM tbl',\n  FormatConfig.builder()\n    .indent(\"    \") // Defaults to two spaces\n    .uppercase(true) // Defaults to false (not safe to use when SQL dialect has case-sensitive identifiers)\n    .linesBetweenQueries(2) // Defaults to 1\n    .maxColumnLength(100) // Defaults to 50\n    .params(Arrays.asList(\"a\", \"b\", \"c\")) // Map or List. See Placeholders replacement.\n    .build()\n);\n```\n\n### Dialect\n\nYou can pass dialect `com.github.vertical_blank.sqlformatter.languages.Dialect` or `String` to `SqlFormatter.of` :\n\n```java\nSqlFormatter\n    .of(Dialect.N1ql)  // Recommended\n     //.of(\"n1ql\")      // String can be passed\n    .format(\"SELECT *\");\n```\n\nSQL formatter supports the following dialects:\n\n- **sql** - [Standard SQL][]\n- **mariadb** - [MariaDB][]\n- **mysql** - [MySQL][]\n- **postgresql** - [PostgreSQL][]\n- **db2** - [IBM DB2][]\n- **plsql** - [Oracle PL/SQL][]\n- **n1ql** - [Couchbase N1QL][]\n- **redshift** - [Amazon Redshift][]\n- **spark** - [Spark][]\n- **tsql** - [SQL Server Transact-SQL][tsql]\n\n### Extend formatters\n\nFormatters can be extended as below :\n\n```java\nSqlFormatter\n    .of(Dialect.MySql)\n    .extend(cfg -\u003e cfg.plusOperators(\"=\u003e\"))\n    .format(\"SELECT * FROM table WHERE A =\u003e 4\")\n```\n\nThen it results in:\n\n```sql\nSELECT\n  *\nFROM\n  table\nWHERE\n  A =\u003e 4\n```\n\n### Placeholders replacement\n\nYou can pass `List` or `Map` to `format` :\n\n```java\n// Named placeholders\nMap\u003cString, String\u003e namedParams = new HashMap\u003c\u003e();\nnamedParams.put(\"foo\", \"'bar'\");\nSqlFormatter.of(Dialect.TSql).format(\"SELECT * FROM tbl WHERE foo = @foo\", namedParams);\n\n// Indexed placeholders\nSqlFormatter.format(\"SELECT * FROM tbl WHERE foo = ?\", Arrays.asList(\"'bar'\"));\n```\n\nBoth result in:\n\n```sql\nSELECT\n  *\nFROM\n  tbl\nWHERE\n  foo = 'bar'\n```\n\n## Build\n\nBuilding this library requires JDK 11 because of [ktfmt](https://github.com/facebookincubator/ktfmt).\n\n\n[standard sql]: https://en.wikipedia.org/wiki/SQL:2011\n[couchbase n1ql]: http://www.couchbase.com/n1ql\n[ibm db2]: https://www.ibm.com/analytics/us/en/technology/db2/\n[oracle pl/sql]: http://www.oracle.com/technetwork/database/features/plsql/index.html\n[amazon redshift]: https://docs.aws.amazon.com/redshift/latest/dg/cm_chap_SQLCommandRef.html\n[spark]: https://spark.apache.org/docs/latest/api/sql/index.html\n[postgresql]: https://www.postgresql.org/\n[mariadb]: https://mariadb.com/\n[mysql]: https://www.mysql.com/\n[tsql]: https://docs.microsoft.com/en-us/sql/sql-server/","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvertical-blank%2Fsql-formatter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvertical-blank%2Fsql-formatter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvertical-blank%2Fsql-formatter/lists"}