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批量创建内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:

相关文章

  • 浅析Go语言中的缓冲区及其在fmt包中的应用

    浅析Go语言中的缓冲区及其在fmt包中的应用

    这篇文章主要为大家详细介绍了Go语言中的缓冲区及其在fmt包中的应用的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2024-01-01
  • Go语言封装MinIO相关操作详解

    Go语言封装MinIO相关操作详解

    MinIO 是一个高性能的对象存储服务,兼容 Amazon S3 API,广泛用于存储和管理海量数据,本文将介绍如何用 Go 语言封装一个简单的 MinIO 操作包,需要的可以参考下
    2024-11-11
  • Go Slice 实现原理从底层机制到工程实践详解

    Go Slice 实现原理从底层机制到工程实践详解

    本文将从企业级开发视角,深入剖析 Slice的底层实现原理,结合性能优化实践,帮助开发者写出更高效、更安全的 Go 代码,对go slice实现原理感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • Go语言在终端打开实现进度条处理数据方法实例

    Go语言在终端打开实现进度条处理数据方法实例

    这篇文章主要介绍了Go语言在终端打开实现进度条处理数据方法实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • go语言中线程池的实现

    go语言中线程池的实现

    Go语言中并没有直接类似 Java 线程池的内建概念,主要通过goroutine和channel来实现并发处理,本文主要介绍了go语言中线程池的实现,具有一定的参考价值,感兴趣的可以了解一下
    2025-04-04
  • 使用gin框架搭建简易服务的实现方法

    使用gin框架搭建简易服务的实现方法

    go语言web框架挺多的,本文就介绍了一下如何使用gin框架搭建简易服务的实现方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • golang文件读取-按指定BUFF大小读取方式

    golang文件读取-按指定BUFF大小读取方式

    这篇文章主要介绍了golang文件读取-按指定BUFF大小读取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Go语言提升开发效率的语法糖技巧分享

    Go语言提升开发效率的语法糖技巧分享

    每门语言都有自己的语法糖,像java的语法糖就有方法变长参数、拆箱与装箱、枚举、for-each等等,Go语言也不例外。本文就来介绍一些Go语言的语法糖,需要的可以参考一下
    2022-07-07
  • Golang中Gin框架的使用入门教程

    Golang中Gin框架的使用入门教程

    这篇文章主要为大家详细介绍了Golang中Gin框架的使用教程,文中通过简单的示例为大家讲解了Gin框架的安装与使用,感兴趣的小伙伴开业跟随小编一起学习一下
    2022-10-10
  • Windows上安装Go并配置环境变量(图文步骤)

    Windows上安装Go并配置环境变量(图文步骤)

    开始使用Go创建应用程序之前,需要设置开发环境,本文主要介绍了Windows上安装Go并配置环境变量,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08

最新评论