@@ -3,9 +3,12 @@ package main
33import (
44 "database/sql"
55 "flag"
6+ "fmt"
67 "log"
8+ "strings"
79
810 _ "github.com/go-sql-driver/mysql"
11+ "github.com/jmoiron/sqlx"
912)
1013
1114const (
@@ -15,7 +18,7 @@ const (
1518FROM
1619 COLUMNS
1720WHERE
18- TABLE_SCHEMA IN (%s );
21+ TABLE_SCHEMA IN (? );
1922`
2023)
2124
@@ -25,14 +28,18 @@ type schema struct {
2528 dataType string
2629}
2730
28- func fetchSchema (db * sql.DB , targets string ) (schema , error ) {
29- targetsConditions := "'" + strings .Join (strings .Split (targets , "," ), "','" ) + "'"
31+ func fetchSchemas (db * sql.DB , targets []string ) ([]schema , error ) {
32+ query , args , err := sqlx .In (queryBase , targets )
33+ if err != nil {
34+ return nil , err
35+ }
3036
31- rows , err := db .Query (queryBase , targetsConditions )
32- defer rows .Close ()
37+ rows , err := db .Query (query , args ... )
3338 if err != nil {
3439 return nil , err
3540 }
41+ defer rows .Close ()
42+ fmt .Println (rows )
3643
3744 var schemas []schema
3845 for rows .Next () {
@@ -56,14 +63,15 @@ func main() {
5663
5764 flag .Parse ()
5865
59- dbUri := fmt .Sprinft ("%s:%s@tcp(%s:%d)/%s" , * dbUser , * dbPass , * dbhost , * dbPort , databaseName )
66+ dbUri := fmt .Sprintf ("%s:%s@tcp(%s:%d)/%s" , * dbUser , * dbPass , * dbHost , * dbPort , databaseName )
6067 db , err := sql .Open ("mysql" , dbUri )
6168 if err != nil {
6269 log .Fatalf ("Failed to connect database : %v" , err )
6370 }
6471
65- schemas , err := fetchSchema (db , * targets )
72+ schemas , err := fetchSchemas (db , strings . Split ( * targets , "," ) )
6673 if err != nil {
6774 log .Fatalf ("Failed to fetch schemas : %v" , err )
6875 }
76+ fmt .Println (schemas )
6977}
0 commit comments