golang读取csv文件到数据库

2024-01-23  本文已影响0人  夜空最亮的9星
package main

import (
    "github.com/gocarina/gocsv"
    "gorm.io/driver/postgres"
    "gorm.io/gorm"
    "os"
)

type NotUsed struct {
    Name string
}

type Client struct { // Our example struct, you can use "-" to ignore a field
    DeviceId    string `csv:"device_id" gorm:"device_id"`
    uuid        string `csv:"uuid" gorm:"uuid"`
    GroupIndex  string `csv:"group_index" gorm:"group_index"`
    GroupType   string `csv:"group_type" gorm:"group_type"`
    GateStatus  string `csv:"gate_status" gorm:"gate_status"`
    ImgUrl      string `csv:"img_url" gorm:"img_url"`
    PlateNumber string `csv:"plate_number" gorm:"plate_number"`
    Threshold   string `csv:"threshold" gorm:"threshold"`
    PlateScore  string `csv:"plate_score" gorm:"plate_score"`
    RecordTime  string `csv:"record_time" gorm:"record_time"`
    EventTime   string `csv:"event_time" gorm:"event_time"`
    ElapsedTime string `csv:"elapsed_time" gorm:"elapsed_time"`
}

var DbEngin *gorm.DB

func InitDb() {
    dsn := "host=192.168.1.127 user=postgres password=123456 dbname=postgres port=5432 sslmode=disable TimeZone=Asia/Shanghai"
    gormdb, _ := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    gormdb.AutoMigrate(&Client{})
    DbEngin = gormdb
}

func main() {
    clientsFile, err := os.OpenFile("0001.csv", os.O_RDWR|os.O_CREATE, os.ModePerm)
    if err != nil {
        panic(err)
    }
    defer clientsFile.Close()
    InitDb()
    clients := []*Client{}
    if err := gocsv.UnmarshalFile(clientsFile, &clients); err != nil { // Load clients from file
        panic(err)
    }
    for _, client := range clients {
        //fmt.Printf("%#v", client)
        DbEngin.Create(&client)
    }
}

上一篇 下一篇

猜你喜欢

热点阅读