Skip to content

Instantly share code, notes, and snippets.

@noborus
Last active February 11, 2020 15:04
Show Gist options
  • Save noborus/45672d1a3fcb8c9c5b484eff18f45a6d to your computer and use it in GitHub Desktop.
Save noborus/45672d1a3fcb8c9c5b484eff18f45a6d to your computer and use it in GitHub Desktop.
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "root:@/gotest")
if err != nil {
panic(err.Error())
}
defer db.Close()
tx, err := db.Begin()
if err != nil {
panic(err.Error())
}
if _, err = db.Exec("DROP TABLE IF EXISTS loadtest;"); err != nil {
panic(err.Error())
}
if _, err = db.Exec("CREATE TABLE loadtest ( id INT, value1 VARCHAR(20),value2 VARCHAR(20) );"); err != nil {
panic(err.Error())
}
var stmt *sql.Stmt
//stmt, err = tx.Prepare("INSERT INTO loadtest (id, value1, value2 ) VALUES (?, ?, ?);")
stmt, err = tx.Prepare("LOAD DATA LOCAL INFILE 'Data::Data' INTO TABLE loadtest (id, value1, value2);")
if err != nil {
panic(err.Error())
}
for i := 0; i < 10000; i++ {
if _, err = stmt.Exec(i, "test1", "test2"); err != nil {
panic(err.Error())
}
}
stmt.Close()
var count int
if err = tx.QueryRow("SELECT COUNT(*) FROM loadtest;").Scan(&count); err != nil {
panic(err.Error())
}
fmt.Printf("loadtest table count: %d\n", count)
if err = tx.Commit(); err != nil {
panic(err.Error())
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment