https://github.com/sunary/gorm-bulk-insert
implement BulkInsert using gorm
https://github.com/sunary/gorm-bulk-insert
gorm insert upsert
Last synced: 8 months ago
JSON representation
implement BulkInsert using gorm
- Host: GitHub
- URL: https://github.com/sunary/gorm-bulk-insert
- Owner: sunary
- License: other
- Created: 2020-06-01T09:00:15.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-08-08T14:44:32.000Z (over 4 years ago)
- Last Synced: 2025-03-30T09:22:59.344Z (9 months ago)
- Topics: gorm, insert, upsert
- Language: Go
- Homepage:
- Size: 41 KB
- Stars: 19
- Watchers: 1
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Gorm Bulk Insert/Upsert
`Gorm Bulk Insert` is a library to implement bulk insert/upsert using [gorm](https://github.com/jinzhu/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
```go
bulk.BulkInsert(db, bulkData)
// or
bulk.BulkInsertWithTableName(db, tableName, bulkData)
```
### BulkUpsert
```go
bulk.BulkUpsert(db, bulkData, uniqueKeys)
// or
bulk.BulkUpsertWithTableName(db, tableName, bulkData, uniqueKeys)
```
## Example
```go
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