登录
首页 >  Golang >  Go问答

批量插入数据到SQL Server 使用database/sql包

来源:stackoverflow

时间:2024-02-27 15:54:23 296浏览 收藏

Golang不知道大家是否熟悉?今天我将给大家介绍《批量插入数据到SQL Server 使用database/sql包》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!

问题内容

我正在尝试使用 go 在 sql server 中插入多条记录。我正在使用下面的代码。但出现此错误“mssql:'?'附近的语法不正确。” .

func BulkInsert(unsavedRows []*ExampleRowStruct) error {
    valueStrings := make([]string, 0, len(unsavedRows))
    valueArgs := make([]interface{}, 0, len(unsavedRows) * 3)
    for _, post := range unsavedRows {
        valueStrings = append(valueStrings, "(?, ?, ?)")
        valueArgs = append(valueArgs, post.Column1)
        valueArgs = append(valueArgs, post.Column2)
        valueArgs = append(valueArgs, post.Column3)
    }
    stmt := fmt.Sprintf("INSERT INTO my_sample_table (column1, column2, column3) VALUES %s", 
                        strings.Join(valueStrings, ","))
    _, err := db.Exec(stmt, valueArgs...)
    return err
}

解决方案


我不知道 go,但是查看您的 stmt 值,我认为您的查询格式可能不正确。

如果您考虑直接输入 sql server 查询的内容,它会类似于:

insert into my_sample_table (column1, column2, column3) values ('val1', 'val2', 'val3')

(假设所有列都是 varchar)

这些也可以使用变量来完成:

declare @val1 varchar(4) = 'val1', @val2 varchar(4) = 'val2', @val3 varchar(4) = 'val3'
insert into my_sample_table (column1, column2, column3) values (@val1, @val2, @val3)

来自 @adrian 链接,您的案例的示例可能是:

db.querycontext(ctx, `insert into my_sample_table (column1, column2, column3) values (@p1, @p2, @p3);`, "val1", "val2", "val3")

基于此 - 尝试以下操作:

stmt := fmt.Sprintf("INSERT INTO my_sample_table (column1, column2, column3) VALUES (@p1, @p2, @p3)", strings.Join(valueStrings, ","))

理论要掌握,实操不能落!以上关于《批量插入数据到SQL Server 使用database/sql包》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>