I am trying to create a volume insert. I am using gorm github.com/jinzhu/gorm
import ( "fmt" dB "github.com/edwinlab/api/repositories" ) func Update() error { tx := dB.GetWriteDB().Begin() sqlStr := "INSERT INTO city(code, name) VALUES (?, ?),(?, ?)" vals := []interface{}{} vals = append(vals, "XX1", "Jakarta") vals = append(vals, "XX2", "Bandung") tx.Exec(sqlStr, vals) tx.Commit() return nil }
But I have an error:
Error 1136: The number of columns does not match the number of values ββin row 1 because I am returning an invalid query
INSERT INTO city(code, name) VALUES ('XX1','Jakarta','XX2','Bandung', %!v(MISSING)),(%!v(MISSING), %!v(MISSING))
If I use manual query, it works:
tx.Exec(sqlStr, "XX1", "Jakarta", "XX2", "Bandung")
It will generate:
INSERT INTO city(code, name) VALUES ('XX1', 'Jakarta'),('XX2', 'Bandung')
The problem is how to make an array interface to create a string, for example "XX1", "Jakarta", ...
Thanks for the help.