Ai
1 Star 0 Fork 0

坐公交也用券/数据库初始化

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
main.go 1.68 KB
一键复制 编辑 原始数据 按行查看 历史
坐公交也用券 提交于 2025-03-26 16:28 +08:00 . 拆分相关功能独立
package main
import (
"database/sql"
"flag"
"fmt"
"log"
"os"
"gitee.com/liumou_site/database-initialized/pkg/dbutils"
_ "github.com/go-sql-driver/mysql"
)
func main() {
var (
dbUser = flag.String("user", "", "Database username")
dbPassword = flag.String("password", "", "Database password")
dbHost = flag.String("host", "", "Database host (without port)")
port = flag.Int("port", 3306, "Database port")
dbName = flag.String("dbname", "", "Database name")
sqlFile = flag.String("file", "", "SQL file path")
forceImport = flag.Bool("force", false, "Force import even if tables exist")
)
flag.Parse()
// 在flag.Parse()后添加参数校验
if *dbUser == "" || *dbPassword == "" || *dbHost == "" || *dbName == "" || *sqlFile == "" {
fmt.Println("All parameters are required")
flag.PrintDefaults()
os.Exit(1)
}
// 建立数据库连接
db, err := dbutils.ConnectDB(*dbUser, *dbPassword, *dbHost, *port, *dbName)
if err != nil {
log.Fatal("Failed to connect to database:", err)
return
}
defer func(db *sql.DB) {
err = db.Close()
if err != nil {
log.Fatal("Failed to close database:", err)
}
}(db)
// 在读取SQL文件后添加表存在检查
if !*forceImport {
exists, err := dbutils.CheckTablesExist(db, *dbName)
if err != nil {
log.Fatal("Table check failed:", err)
}
if exists {
fmt.Println("The data table already exists. To overwrite it, please use - force")
return
} else {
fmt.Println("Target table does not exist, import begins")
}
}
err = dbutils.ExecSqlScript(*sqlFile, db)
if err != nil {
log.Fatal("Failed to execute SQL script:", err)
return
}
fmt.Println("SQL file imported successfully!")
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/liumou_site/database-initialized.git
git@gitee.com:liumou_site/database-initialized.git
liumou_site
database-initialized
数据库初始化
master

搜索帮助