Hogimn.Sql.Formatter
2.0.1
dotnet add package Hogimn.Sql.Formatter --version 2.0.1
NuGet\Install-Package Hogimn.Sql.Formatter -Version 2.0.1
<PackageReference Include="Hogimn.Sql.Formatter" Version="2.0.1" />
<PackageVersion Include="Hogimn.Sql.Formatter" Version="2.0.1" />
<PackageReference Include="Hogimn.Sql.Formatter" />
paket add Hogimn.Sql.Formatter --version 2.0.1
#r "nuget: Hogimn.Sql.Formatter, 2.0.1"
#addin nuget:?package=Hogimn.Sql.Formatter&version=2.0.1
#tool nuget:?package=Hogimn.Sql.Formatter&version=2.0.1
SQL Formatter
This repository contains the C# port of the popular Java SQL formatter
This does not support:
- Stored procedures.
- Changing of the delimiter type to something else than ;.
Usage
NuGet
To install the Hogimn.Sql.Formatter package with NuGet, you can use the following command in your terminal or command prompt.
dotnet add package Hogimn.Sql.Formatter --version 2.0.1
For more details, visit the NuGet Gallery page.
Examples
You can easily use SQL.Formatter.SqlFormatter
:
SqlFormatter.Format("SELECT * FROM table1")
This will output:
SELECT
*
FROM
table1
You can also pass FormatConfig
object built by builder:
SqlFormatter.Format("SELECT * FROM tbl",
FormatConfig.Builder()
.Indent(" ") // Defaults to two spaces
.Uppercase(true) // Defaults to false (not safe to use when SQL dialect has case-sensitive identifiers)
.LinesBetweenQueries(2) // Defaults to 1
.MaxColumnLength(100) // Defaults to 50
.Params(new List<string>{"a", "b", "c"}) // Dictionary or List. See Placeholders replacement.
.Build());
);
Dialect
You can pass dialect SQL.Formatter.Language.Dialect
or String
to SqlFormatter.Of
:
SqlFormatter
.Of(Dialect.N1ql) // Recommended
//.Of("n1ql") // String can be passed
.Format("SELECT *");
SQL formatter supports the following dialects:
- sql - Standard SQL (Default)
- mariadb - MariaDB
- mysql - MySQL
- postgresql - PostgreSQL
- db2 - IBM DB2
- plsql - Oracle PL/SQL
- n1ql - Couchbase N1QL
- redshift - Amazon Redshift
- spark - Spark
- tsql - SQL Server Transact-SQL
I’m currently using the default dialect for Oracle SQL, and it performs well for my needs.
As such, I don’t have the motivation to maintain or expand support for other dialects.
If you require support for additional dialects, please consider contributing to this project.
Extend formatters
Formatters can be extended as below :
SqlFormatter
.Of(Dialect.MySql)
.Extend(cfg => cfg.PlusOperators("=>"))
.Format("SELECT * FROM table WHERE A => 4")
Then it results in:
SELECT
*
FROM
table
WHERE
A => 4
Placeholders replacement
You can pass List
or Dictionary
to Format
:
// Named placeholders
Dictionary<string, string> namedParams = new Dictionary<string, string>();
namedParams.Add("foo", "'bar'");
SqlFormatter.Of(Dialect.TSql).Format("SELECT * FROM tbl WHERE foo = @foo", namedParams);
// Indexed placeholders
SqlFormatter.Format("SELECT * FROM tbl WHERE foo = ?", new List<string> {"'bar'"});
Both result in:
SELECT
*
FROM
tbl
WHERE
foo = 'bar'
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.CSharp (>= 4.7.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.