package main import ( "database/sql" "flag" "fmt" "io/ioutil" "log" "os" "strings" _ "github.com/go-sql-driver/mysql" ) var flagUser = flag.String("user", "logbot4", "MySQL user") var flagPassword = flag.String("password", "logbot4", "MySQL password") var flagDatabase = flag.String("database", "logbot4", "MySQL database") func main() { flag.Parse() connString := fmt.Sprintf("%s:%s@/%s", *flagUser, *flagPassword, *flagDatabase) db, err := sql.Open("mysql", connString) if err != nil { log.Fatalf("Could not open SQL connection: %s", err) } file, err := os.Open("./data/setup.sql") if err != nil { log.Fatalf("Could not open ./data/setup.sql: %s", err) } data, err := ioutil.ReadAll(file) if err != nil { log.Fatalf("Could not read setup.sql: %s", err) } statements := strings.Split(string(data), ";") for _, statement := range statements { statement := strings.Trim(statement, "\n\t  ") if len(statement) <= 1 { continue } result, err := db.Exec(statement) if err != nil { log.Fatalf("Could not execute statement: %s", err) } affected, _ := result.RowsAffected() log.Printf("%d rows affected", affected) } }