[Go]GO语言实战-GO-FLY在线客服gorm导入sql文件
2023-02-18 15:41:18 时间
当初始化项目的时候,之前需要手动导入数据库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语句
执行完成以后的效果:
相关文章
- [Linux] 编写Dockerfile文件自动构建镜像
- [Linux] nginx的try_files指令实现隐藏index.php的重写
- [linux] shell脚本编程-统计日志文件中的设备号发通知邮件
- [Linux]F5负载均衡器
- [Go] golang设置运行的cpu数
- [Go] golang的MPG调度模型
- [Linux] 进程间通信
- [linux] 多进程和多线程
- [linux] 进程五状态模型
- Linux系统日志介绍
- Linux系统账户后门及排查
- [Go] golang的用途和windows搭建环境
- Linux操作系统root账号密码获取防范技术研究
- [Linux] Linux系统(进程管理)
- [Linux] ssh秘钥对免密码登陆
- [Linux] Linux系统(用户管理)
- [Linux] Linux系统(文件操作)
- [Linux] Linux系统(登陆、退出、修密码)
- [Linux] host dig nslookup查询域名的DNS解析
- [javaSE] 看博客学习多线程的创建方式和优劣比较和PHP多线程