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

您可能感兴趣的文章:

相关文章

  • 使用GORM将PostgreSQL集成到Go框架中

    使用GORM将PostgreSQL集成到Go框架中

    在go中集成postgresql需使用gorm orm,步骤如下:安装go和postgresql,安装 gorm:go get -u gorm.io/gorm,配置数据库连接字符串,定义模型类,迁移数据库架构,使用 gorm 进行增删改查操作,本指南将介绍如何使用 GORM(一个广受欢迎的 ORM),将PostgreSQL集成到你的Go应用中
    2024-08-08
  • 一文详解Golang中new和make的区别

    一文详解Golang中new和make的区别

    在Go语言中,new和make是两个用于创建对象的内建函数。本文将详细介绍new和make的区别,并通过多个方面的分析和代码示例,帮助大家理解它们的使用场景
    2023-05-05
  • Golang你一定要懂的连接池实现

    Golang你一定要懂的连接池实现

    这篇文章主要介绍了Golang你一定要懂的连接池实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • golang实现aes-cbc-256加密解密功能

    golang实现aes-cbc-256加密解密功能

    这篇文章主要介绍了golang实现aes-cbc-256加密解密功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • goFrame的队列gqueue对比channel使用详解

    goFrame的队列gqueue对比channel使用详解

    这篇文章主要为大家介绍了goFrame的gqueue对比channel使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • Go语言学习之context包的用法详解

    Go语言学习之context包的用法详解

    日常Go开发中,Context包是用的最多的一个了,几乎所有函数的第一个参数都是ctx,那么我们为什么要传递Context呢,Context又有哪些用法,底层实现是如何呢?相信你也一定会有探索的欲望,那么就跟着本篇文章,一起来学习吧
    2022-10-10
  • 一文吃透Go的内置RPC原理

    一文吃透Go的内置RPC原理

    这篇文章主要为大家详细介绍了Go语言中内置RPC的原理。说起 RPC 大家想到的一般是框架,Go 作为编程语言竟然还内置了 RPC,着实让我有些吃鲸,本文就来一起聊聊吧
    2023-03-03
  • 从源码深入理解golang RWMutex读写锁操作

    从源码深入理解golang RWMutex读写锁操作

    这篇文章主要介绍了从源码深入理解golang RWMutex读写锁操作,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • golang-gin-mgo高并发服务器搭建教程

    golang-gin-mgo高并发服务器搭建教程

    这篇文章主要介绍了golang-gin-mgo高并发服务器搭建教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 详解golang中make与new的异同点和用法

    详解golang中make与new的异同点和用法

    这篇文章将给大家介绍了go语言中函数new与make的使用和区别,关于go语言中new和make是内建的两个函数,主要用来创建分配类型内存,文中通过代码示例介绍的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-01-01

最新评论