Golang使用CopyIn进行批量创建的示例代码
更新时间:2023年07月11日 08:36:11 作者:fwhezfwhez
本文主要介绍了Golang使用CopyIn进行批量创建的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
前言
本文介绍两点:
- 如何在golang中使用copyin
- 如何对特殊字符jsonb进行插入(需要显式强制转化为string类型)
package main
import (
"fmt"
"github.com/jinzhu/gorm"
"github.com/lib/pq"
)
func main() {
fmt.Println(1)
dbConfig := fmt.Sprintf("host=localhost user=postgres dbname=postgres sslmode=disable password=123456 application_name=xxx")
fmt.Println("db:", dbConfig)
engine, e := gorm.Open("postgres", dbConfig)
if e != nil {
panic(e)
}
driverdb := engine.DB()
tx,e := driverdb.Begin()
if e!=nil {
panic(e)
}
// 表名为test
// 字段为 age-integer, name-varchar, attach-jsonb
stmt, e := tx.Prepare(pq.CopyIn("test", "age","name", "attach"))
if e != nil {
tx.Rollback()
panic(e)
}
defer stmt.Close()
for i := 0; i < 10000; i++ {
var attach = map[string]interface{}{
"money": 19,
"mother": "芳芳",
}
buf, _ := json.Marshal(attach)
_, e := stmt.Exec(i, "张三", string(buf))
if e != nil {
tx.Rollback()
panic(e)
}
}
// stmt.Exec 必须空执行一次表示结束。否则tx.Commit将阻塞
stmt.Exec()
tx.Commit()
}到此这篇关于Golang使用CopyIn进行批量创建的示例代码的文章就介绍到这了,更多相关Golang CopyIn批量创建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
golang 定时任务方面time.Sleep和time.Tick的优劣对比分析
这篇文章主要介绍了golang 定时任务方面time.Sleep和time.Tick的优劣对比分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-05-05
通过函数如何将golang float64 保留2位小数(方法汇总)
这篇文章主要介绍了通过函数将golang float64保留2位小数,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-08-08
Golang微服务框架Kratos实现Kafka消息队列的方法
消息队列是大型分布式系统不可缺少的中间件,也是高并发系统的基石中间件,所以掌握好消息队列MQ就变得极其重要,在本文当中,您将了解到:什么是消息队列?什么是Kafka?怎样在微服务框架Kratos当中应用Kafka进行业务开发,需要的朋友可以参考下2023-09-09


最新评论