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 //}