• [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,_:=tools.IsFileExist(sqlFile)
        if !isExit||!dataExit{
            fmt.Println("config/mysql.json 数据库配置文件或者数据库文件go-fly.sql不存在")
            os.Exit(1)
        }
        sqls,_:=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/gorm"
        "github.com/taoshihan1991/imaptool/config"
        "time"
    )
    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:"index" json:"deleted_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("mysql",dsn)
        DB.SingularTable(true)
        DB.LogMode(true)
        DB.DB().SetMaxIdleConns(10)
        DB.DB().SetMaxOpenConns(100)
    }
    func Execute(sql string){
        DB.Exec(sql)
    }
    func CloseDB() {
        defer DB.Close()
    }

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

    执行完成以后的效果:

  • 相关阅读:
    Jmeter_Beanshell_使用Java处理JSON块
    BeanShell Processor_使用Java处理脚本
    MySQL_explain关键字分析查询语句
    LoadRunner11_录制脚本时的浏览器版本
    Jmeter_实现Excel文件导出到本地
    Jmeter_录制HTTPS
    性能测试常用sql语句
    LoadRunner11_MySQL数据库脚本
    LoadRunner11_录制Oracle数据库脚本
    实现liunx之间无密码访问——ssh密匙
  • 原文地址:https://www.cnblogs.com/taoshihan/p/13635938.html
Copyright © 2020-2023  润新知