go 语言实现Mysql的批量DML,含insert、update、delete
在Go语言中,可以使用database/sql
标准库和第三方库如go-sql-driver/mysql
来实现对MySQL的批量DML操作。以下是一个示例代码,展示了如何使用Go语言进行批量的INSERT、UPDATE和DELETE操作:
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
db, err := sql.Open("mysql", "username:password@tcp(localhost:3306)/dbname")
if err != nil {
log.Fatal(err)
}
defer db.Close()
// 开启事务
tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
// 批量INSERT
stmt, err := tx.Prepare("INSERT INTO your_table(column1, column2) VALUES(?, ?)")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
for _, value := range [][]interface{}{
{"value1a", "value2a"},
{"value1b", "value2b"},
// ...
} {
if _, err := stmt.Exec(value...); err != nil {
log.Fatal(err)
}
}
// 批量UPDATE
stmt, err = tx.Prepare("UPDATE your_table SET column1=? WHERE column2=?")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
for _, value := range [][]interface{}{
{"new_value1", "condition_value2"},
// ...
} {
if _, err := stmt.Exec(value...); err != nil {
log.Fatal(err)
}
}
// 批量DELETE
stmt, err = tx.Prepare("DELETE FROM your_table WHERE column1=?")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
for _, value := range []interface{}{
"delete_condition_value",
// ...
} {
if _, err := stmt.Exec(value); err != nil {
log.Fatal(err)
}
}
// 提交事务
if err := tx.Commit(); err != nil {
log.Fatal(err)
}
fmt.Println("Batch DML operations completed successfully.")
}
在这个示例中,首先通过sql.Open
建立与MySQL的连接,并开启一个事务。然后,使用tx.Prepare
准备批量执行的SQL语句。通过循环遍历值的集合来执行批量操作,并在每次执行后通过stmt.Exec
来应用参数。最后,使用tx.Commit
来提交事务。
请确保替换示例中的数据库连接字符串、表名、列名以及值来匹配您的实际数据库配置和数据。
评论已关闭