我有一个结构列表,如下
row = [
{
"name":<name1>,
"age" :<age1>,
"job" :<job1>
},
{
"name":<name1>,
"age" :<age1>,
"job" :<job1>
},
{
"name":<name1>,
"age" :<age1>,
"job" :<job1>
},
etc...
]
我想将其插入到 SQL 表中。到目前为止,我正在遍历数组并逐行插入每一行。但是有没有其他方法可以通过一个查询插入所有行?我知道批量插入,但我的理解是,对于批量插入,我必须从外部文件导入数据。我不想那样做。如何使用该数组中的数据并执行批量插入?
最佳答案
type Person struct {
Name string
Age int
Job string
}
func InsertPeople(db *sql.DB, personSlice []*Person) error {
var queryString = `INSERT INTO "person_table" (
"name"
, "age"
, "job"
) VALUES `
numOfFields := 3
params := make([]interface{}, len(personSlice)*numOfFields)
for i, p := range personSlice {
pos := i * numOfFields
params[pos+0] = p.Name
params[pos+1] = p.Age
params[pos+2] = p.Job
queryString += `(?, ?, ?),`
}
queryString = queryString[:len(queryString)-1] // drop last comma
_, err := db.Exec(queryString, params...)
return err
}
关于mysql - 使用 golang 将数组中的行批量插入到 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69217606/