golang连接MySQL并导入执行SQL文件
2023-02-18 15:36:58 时间
实现golang连接MySQL数据库导入执行一个sql文件
package tools import ( "fmt" _ "github.com/go-sql-driver/mysql" "github.com/jinzhu/gorm" "io/ioutil" "log" "os" "strings" "time" ) type ImportSqlTool struct { SqlPath string Username, Password, Server, Port, Database string } func (this *ImportSqlTool) ImportSql() error { _, err := os.Stat(this.SqlPath) if os.IsNotExist(err) { log.Println("数据库SQL文件不存在:", err) return err } dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", this.Username, this.Password, this.Server, this.Port, this.Database) db, err := gorm.Open("mysql", dsn) if err != nil { log.Println("数据库连接失败:", err) //panic("数据库连接失败!") return err } db.SingularTable(true) db.LogMode(true) db.DB().SetMaxIdleConns(10) db.DB().SetMaxOpenConns(100) db.DB().SetConnMaxLifetime(59 * time.Second) sqls, _ := ioutil.ReadFile(this.SqlPath) sqlArr := strings.Split(string(sqls), ";") for _, sql := range sqlArr { sql = strings.TrimSpace(sql) if sql == "" { continue } err := db.Exec(sql).Error if err != nil { log.Println("数据库导入失败:" + err.Error()) return err } else { log.Println(sql, "\t success!") } } return nil }
使用方法
tool:=&ImportSqlTool{ SqlPath: "../import.sql", Username: "go-fly", Password: "go-fly", Server: "127.0.0.1", Port: "3306", Database: "go-fly", } tool.ImportSql()
相关文章
- 记一次Git报错:refusing to merge unrelated histories
- Linux下,查看tomcat的日志catalina.out中指定的字符串
- WordPress主题制作(四):制作头部模板header.php
- WordPress主题制作(五):制作底部模板footer.php
- WordPress主题制作(六):制作侧边栏模板sidebar.php
- WordPress主题制作(七):制作基础模板Index.php
- WordPress主题制作(八):制作文章单页模板single.php
- Git 分支 – 变基
- 嵌入式:ARM的IO访问与芯片选择
- 嵌入式:ARM存储器组织、协处理器及片上总线
- CentOS7升级PHP到7.x
- [备忘]git常用命令
- Linux – 基于CentOS搭建LAMP环境
- 工作中常用的几个git命令
- Git 本地项目连接远程仓库且推送到远程仓库
- 【经验】MySQL 5.6无法通过Navicat远程连接 1045 - Access denied for user解决及设置linux下忽略表名大小写
- Linux神器strace的使用方法及实践
- 5招详解linux之openEuler /centos7防火墙基本使用指南
- 【华为云技术分享】DLI跨源|当DLI遇见MongoDB
- linux Makefile 如何将生成的 .o 文件放到指定文件夹