[Go]GO语言实战-GO-FLY在线客服gorm导入sql文件

前端之家收集整理的这篇文章主要介绍了[Go]GO语言实战-GO-FLY在线客服gorm导入sql文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

当初始化项目的时候,之前需要手动导入数据库sql文件,现在可以直接在命令行参数里输入go-fly install,就可以把数据库文件导进去了

实现方式就是使用gorm执行sql文件里面的每行sql语句

读入sql文件后把字符串按照分号分隔,转成[]string ,然后再循环执行

实例代码是(自行更改文件目录):

func install(){
    sqlFile:=config.Dir+"go-fly.sql"
    isExit,_:=tools.IsFileExist(config.MysqLConf)
    dataExit,1)">tools.IsFileExist(sqlFile)
    if !isExit||!dataExit{
        fmt.Println(config/MysqL.json 数据库配置文件或者数据库文件go-fly.sql不存在)
        os.Exit(1)
    }
    sqls,1)">IoUtil.ReadFile(sqlFile)
    sqlArr:=strings.Split(string(sqls),;)
    for _,sql:=range sqlArr{
        if sql==""{
            continue
        }
        models.Execute(sql)
    }
}

go-fly代码数据库操作类

package models

import (
    fmt"
    github.com/jinzhu/gormgithub.com/taoshihan1991/imaptool/configtime
)
var DB *gorm.DB
type Model struct {
    ID        uint `gorm:primary_key" json:id`
    CreatedAt time.Time `json:created_at`
    UpdatedAt time.Time `json:updated_at`
    DeletedAt *time.Time `sql:indexdeleted_at`
}
func init(){
    MysqL:=config.CreateMysqL()
    dsn := fmt.Sprintf(%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True&loc=Local,MysqL.Username,MysqL.Password,MysqL.Server,MysqL.Port,MysqL.Database)
    DB,_=gorm.Open(MysqLtrue)
    DB.LogMode()
    DB.DB().SetMaxIdleConns(10)
    DB.DB().SetMaxOpenConns(100)
}
func Execute(sql string){
    DB.Exec(sql)
}
func CloseDB() {
    defer DB.Close()
}

简化的逻辑就是gorm open以后得到的实例执行一下Exec方法,执行sql语句

 

执行完成以后的效果

 

猜你在找的Go相关文章