184 lines
5.2 KiB
Go
184 lines
5.2 KiB
Go
package executor
|
|
|
|
//import (
|
|
// _ "github.com/go-sql-driver/mysql"
|
|
//)
|
|
|
|
//func MysqlSqlFileLoad(jackeyLoveIp string, jackeyLoveFileList []string) (bool, []string) {
|
|
//
|
|
// dsn := "root:QzfXQhd3bQ@tcp(" + jackeyLoveIp + ":33306)/"
|
|
// db, err := sql.Open("mysql", dsn)
|
|
// if err != nil {
|
|
// errConnect := fmt.Sprintf("[MysqlSqlFileLoad]- mysql connection error ! please check ! => %s error is %s ", dsn, err.Error())
|
|
// log.Error(errConnect)
|
|
// return false, []string{
|
|
// errConnect,
|
|
// }
|
|
// }
|
|
// defer db.Close()
|
|
//
|
|
// // 确保数据库连接是有效的
|
|
// if err := db.Ping(); err != nil {
|
|
// errConnect := "[MysqlSqlFileLoad]- mysql ping error ! please check !"
|
|
// log.Error(errConnect)
|
|
// return false, []string{
|
|
// errConnect,
|
|
// }
|
|
// }
|
|
//
|
|
// for _, jackeyLoveFile := range jackeyLoveFileList {
|
|
//
|
|
// // 打开 SQL 文件
|
|
// jackeyLove, err := os.Open(jackeyLoveFile)
|
|
// if err != nil {
|
|
// log.ErrorF("[MysqlSqlFileLoad] - failed to load jackeyLoveFile => %s", jackeyLove.Name())
|
|
// }
|
|
// defer jackeyLove.Close()
|
|
//
|
|
// // 逐行读取 SQL 文件并执行
|
|
// query := ""
|
|
// delimiterSwitched := false
|
|
// scanner := bufio.NewScanner(jackeyLove)
|
|
// for scanner.Scan() {
|
|
// sqlStatement := scanner.Text()
|
|
//
|
|
// if strings.HasPrefix(strings.TrimSpace(sqlStatement), "DELIMITER") {
|
|
// delimiterSwitched = true
|
|
// continue
|
|
// }
|
|
// if delimiterSwitched {
|
|
// if strings.TrimSpace(sqlStatement) == "" || strings.TrimSpace(sqlStatement) == ";" {
|
|
// delimiterSwitched = false
|
|
// // 替换自定义分隔符为 ;
|
|
// sqlStatement = strings.ReplaceAll(sqlStatement, ";;", ";")
|
|
// } else {
|
|
// // 忽略自定义分隔符行
|
|
// continue
|
|
// }
|
|
// }
|
|
//
|
|
// // 这里可以添加逻辑来忽略空行或注释行
|
|
// if sqlStatement == "" || sqlStatement[:2] == "--" || sqlStatement[:2] == "/*" {
|
|
// continue
|
|
// }
|
|
//
|
|
// query += sqlStatement
|
|
//
|
|
// if strings.HasSuffix(strings.TrimSpace(sqlStatement), ";") {
|
|
//
|
|
// fmt.Printf("%s -> %s", jackeyLoveFile, query)
|
|
//
|
|
// _, err := db.Exec(query)
|
|
// if err != nil {
|
|
// executeError := fmt.Sprintf("[MysqlSqlFileLoad] - jackeyLoveFile %s 执行出错: %s, 错误信息: %s", jackeyLove.Name(), sqlStatement, err.Error())
|
|
// log.Error(executeError)
|
|
// return false, []string{
|
|
// executeError,
|
|
// }
|
|
// }
|
|
// query = ""
|
|
// } else {
|
|
// query += " " // 添加空格以便连接多行语句
|
|
// }
|
|
// }
|
|
//
|
|
// // 检查扫描过程中是否有错误
|
|
// if err := scanner.Err(); err != nil {
|
|
// executeError := fmt.Sprintf("[MysqlSqlFileLoad] - jackeyLoveFile %s 文件加载错误! 错误信息: %s", jackeyLove.Name(), err.Error())
|
|
// log.Error(executeError)
|
|
// return false, []string{
|
|
// executeError,
|
|
// }
|
|
// }
|
|
// log.DebugF("[MysqlSqlFileLoad] - jackeyLoveFile %s execute success !", jackeyLove.Name())
|
|
// }
|
|
//
|
|
// return true, append(jackeyLoveFileList, "[MysqlSqlFileLoad] all file loaded !")
|
|
//}
|
|
|
|
//func MySqlParseSQLFile(sqlFilePath string) []string {
|
|
//
|
|
// var result []string
|
|
//
|
|
// // 打开 SQL 文件
|
|
// jackeyLove, err := os.Open(sqlFilePath)
|
|
// if err != nil {
|
|
// log.ErrorF("[MySqlParseSQLFile] - failed to load jackeyLoveFile => %s", jackeyLove.Name())
|
|
// }
|
|
// defer jackeyLove.Close()
|
|
//
|
|
// // 逐行读取 SQL 文件并执行
|
|
// query := ""
|
|
// delimiterSwitched := false
|
|
// scanner := bufio.NewScanner(jackeyLove)
|
|
// for scanner.Scan() {
|
|
// sqlStatement := scanner.Text()
|
|
//
|
|
// if strings.HasPrefix(strings.TrimSpace(sqlStatement), "DELIMITER") {
|
|
// delimiterSwitched = true
|
|
// continue
|
|
// }
|
|
// if delimiterSwitched {
|
|
// if strings.TrimSpace(sqlStatement) == "" || strings.TrimSpace(sqlStatement) == ";" {
|
|
// delimiterSwitched = false
|
|
// // 替换自定义分隔符为 ;
|
|
// sqlStatement = strings.ReplaceAll(sqlStatement, ";;", ";")
|
|
// } else {
|
|
// // 忽略自定义分隔符行
|
|
// continue
|
|
// }
|
|
// }
|
|
//
|
|
// // 这里可以添加逻辑来忽略空行或注释行
|
|
// if sqlStatement == "" || sqlStatement[:2] == "--" || sqlStatement[:2] == "/*" {
|
|
// continue
|
|
// }
|
|
//
|
|
// query += sqlStatement
|
|
//
|
|
// if strings.HasSuffix(strings.TrimSpace(sqlStatement), ";") {
|
|
//
|
|
// result = append(result, query)
|
|
//
|
|
// query = ""
|
|
// } else {
|
|
// query += "" // 添加空格以便连接多行语句
|
|
// }
|
|
// }
|
|
//
|
|
// // 检查扫描过程中是否有错误
|
|
// if err := scanner.Err(); err != nil {
|
|
// executeError := fmt.Sprintf("[MysqlSqlFileLoad] - jackeyLoveFile %s 文件加载错误! 错误信息: %s", jackeyLove.Name(), err.Error())
|
|
// log.Error(executeError)
|
|
//
|
|
//
|
|
// }
|
|
//
|
|
// return result
|
|
//}
|
|
//
|
|
//func MySqlConnection(jackeyLoveIp string, jackeyLovePort string) (bool, []string) {
|
|
//
|
|
// dsn := "root:QzfXQhd3bQ@tcp(" + jackeyLoveIp + ":33306)/"
|
|
// db, err := sql.Open("mysql", dsn)
|
|
// if err != nil {
|
|
// errConnect := fmt.Sprintf("[MysqlSqlFileLoad]- mysql connection error ! please check ! => %s error is %s ", dsn, err.Error())
|
|
// log.Error(errConnect)
|
|
// return false, []string{
|
|
// errConnect,
|
|
// }
|
|
// }
|
|
// defer db.Close()
|
|
//
|
|
// // 确保数据库连接是有效的
|
|
// if err := db.Ping(); err != nil {
|
|
// errConnect := "[MysqlSqlFileLoad]- mysql ping error ! please check !"
|
|
// log.Error(errConnect)
|
|
// return false, []string{
|
|
// errConnect,
|
|
// }
|
|
// }
|
|
//
|
|
// return true, nil
|
|
//}
|