前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >[Go]GO语言实战-GO-FLY在线客服gorm导入sql文件

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

作者头像
唯一Chat
发布2020-09-10 15:18:42
1.3K0
发布2020-09-10 15:18:42
举报
文章被收录于专栏:陶士涵的菜地陶士涵的菜地

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

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

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

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

代码语言:javascript
复制
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代码中数据库操作类

代码语言:javascript
复制
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语句

执行完成以后的效果:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档