Closed clearcodecn closed 2 years ago
You can parse the SQL and restore it from an AST:
package main
import (
"fmt"
"strings"
"github.com/pingcap/tidb/parser"
"github.com/pingcap/tidb/parser/format"
_ "github.com/pingcap/tidb/parser/test_driver"
)
func main() {
p := parser.New()
fmt.Println(beautify(p, "SeleCT a, b from t where ((c = 1));"))
}
func beautify(p *parser.Parser, sql string) string {
stmt, _, err := p.ParseSQL(sql)
if err != nil {
panic(err)
}
var sb strings.Builder
ctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb)
err = stmt[0].Restore(ctx)
if err != nil {
panic(err)
}
return sb.String()
}
thanks.
@tangenta But github.com/pingcap/tidb/parser
couldn't go get
May consider remove this file https://github.com/pingcap/tidb/blob/master/parser/go.mod
You can parse the SQL and restore it from an AST:
package main import ( "fmt" "strings" "github.com/pingcap/tidb/parser" "github.com/pingcap/tidb/parser/format" _ "github.com/pingcap/tidb/parser/test_driver" ) func main() { p := parser.New() fmt.Println(beautify(p, "SeleCT a, b from t where ((c = 1));")) } func beautify(p *parser.Parser, sql string) string { stmt, _, err := p.ParseSQL(sql) if err != nil { panic(err) } var sb strings.Builder ctx := format.NewRestoreCtx(format.DefaultRestoreFlags, &sb) err = stmt[0].Restore(ctx) if err != nil { panic(err) } return sb.String() }
why THE result WITHOUT \n
How to beautify sql with this package ?