Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

sunary/gorm-bulk-insert

Repository files navigation

Gorm Bulk Insert/Upsert

Gorm Bulk Insert is a library to implement bulk insert/upsert using gorm.

Purpose

Save bulk records

Installation

$ go get github.com/sunary/gorm-bulk-insert

This library depends on gorm, following command is also necessary unless you've installed gorm.

$ go get github.com/jinzhu/gorm

Usage

BulkInsert

bulk.BulkInsert(db, bulkData)
// or
bulk.BulkInsertWithTableName(db, tableName, bulkData)

BulkUpsert

bulk.BulkUpsert(db, bulkData, uniqueKeys)
// or
bulk.BulkUpsertWithTableName(db, tableName, bulkData, uniqueKeys)

Example

package main
import (
	"log"
	"time"
	"github.com/jinzhu/gorm"
	_ "github.com/jinzhu/gorm/dialects/mysql"
	bulk "github.com/sunary/gorm-bulk-insert"
)
type User struct {
	ID int
	UserName string `gorm:"column:name"`
	Age int
	Hobby string `gorm:"-"`
	CreatedAt time.Time
	UpdatedAt time.Time
}
func (u User) TableName() string {
	return "user"
}
func main() {
	db, err := gorm.Open("mysql", "root:password@tcp(localhost:3306)/db_name")
	if err != nil {
		log.Fatal(err)
	}
	var bulkData []interface{}
	for i := 0; i < 10000; i++ {
		bulkData = append(bulkData,
			User{
				UserName: "sunary",
				Age: 22,
				Hobby: "dance",
			},
		)
	}
	err = bulk.BulkInsert(db, bulkData)
	// or err = bulk.BulkInsertWithTableName(db, User{}.TableName(), bulkData)
	if err != nil {
		log.Fatal(err)
	}
	var bulkUpsertData []interface{}
	for i := 0; i < 100; i++ {
		bulkUpsertData = append(bulkUpsertData,
			User{
				UserName: "sunary",
				Age: 22,
				Hobby: "soccer",
			},
		)
	}
	err = bulk.BulkUpsert(db, bulkUpsertData, []string{"name"})
	// or err = bulk.BulkUpsertWithTableName(db, User{}.TableName(), bulkUpsertData, []string{"name"})
	if err != nil {
		log.Fatal(err)
	}
}

License

This project is under Apache 2.0 License

About

implement BulkInsert using gorm

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Languages

AltStyle によって変換されたページ (->オリジナル) /