Generates a protobuf file from your mysql database.
Tips: If your operating system is windows, the default encoding of windows command line is "GBK", you need to change it to "UTF-8", otherwise the generated file will be messed up.
go install github.com/Mikaelemmmm/sql2pb@latest
$ sql2pb -h
Usage of sql2pb:
-db string
the database type (default "mysql")
-field_style string
gen protobuf field style, sql_pb | sqlPb (default "sqlPb")
-go_package string
the protocol buffer go_package. defaults to the database schema.
-host string
the database host (default "localhost")
-ignore_columns string
a comma spaced list of mysql columns to ignore
-ignore_tables string
a comma spaced list of tables to ignore
-package string
the protocol buffer package. defaults to the database schema.
-password string
the database password (default "root")
-port int
the database port (default 3306)
-schema string
the database schema
-service_name string
the protobuf service name , defaults to the database schema.
-table string
the table schema,multiple tables ',' split. (default "*")
-user string
the database user (default "root")
$ sql2pb -go_package ./pb -host localhost -package pb -password root -port 3306 -schema usercenter -service_name usersrv -user root > usersrv.proto
$ go get -u github.com/Mikaelemmmm/sql2pb@latest
package main import ( "database/sql" "fmt" "github.com/Mikaelemmmm/sql2pb/core" _ "github.com/go-sql-driver/mysql" "log" ) func main() { dbType:= "mysql" connStr := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s", "root", "root", "127.0.0.1", 3306, "zero-demo") pkg := "my_package" goPkg := "./my_package" table:= "*" serviceName:="usersrv" fieldStyle := "sqlPb" db, err := sql.Open(dbType, connStr) if err != nil { log.Fatal(err) } defer db.Close() s, err := core.GenerateSchema(db, table,nil,nil,serviceName, goPkg, pkg,fieldStyle) if nil != err { log.Fatal(err) } if nil != s { fmt.Println(s) } }
schemabuf : https://github.com/mcos/schemabuf