55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
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)
|
||
}
|
||
}
|