mysql - 使用 golang 将数组中的行批量插入到 SQL Server

标签 mysql sql go bulkinsert

我有一个结构列表,如下

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/

相关文章:

function - 从函数返回函数以及为什么省略括号?

go - 如何解释 os.FileMode 的显示值?

loops - 在迭代过程中同时修改 map 时如何使用RWMutex

C# 将mysql中的选择写入变量

sql - 如何防止 PostgreSQL 更改我格式良好的 SQL 定义

MySQL,限制连接一张表

mysql - 如何迭代列值的可能值

SQL Server 查询多对多关系

mysql - mysql数据库中的计数列

php - 无法从 $_GET 请求中获取值