package db import ( . "code.hoteas.com/golang/hotime/common" "os" "strings" ) // backupSave 保存备份 // path: 备份文件路径 // tt: 表名 // code: 备份类型 0=全部, 1=仅数据, 2=仅DDL func (that *HoTimeDB) backupSave(path string, tt string, code int) { fd, _ := os.OpenFile(path, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0644) defer fd.Close() str := "\r\n" if code == 0 || code == 2 { str += that.backupDdl(tt) } if code == 0 || code == 1 { str += "insert into `" + tt + "`\r\n\r\n(" str += that.backupCol(tt) } _, _ = fd.Write([]byte(str)) } // backupDdl 备份表结构(DDL) func (that *HoTimeDB) backupDdl(tt string) string { data := that.Query("show create table " + tt) if len(data) == 0 { return "" } return ObjToStr(data[0]["Create Table"]) + ";\r\n\r\n" } // backupCol 备份表数据 func (that *HoTimeDB) backupCol(tt string) string { str := "" data := that.Select(tt, "*") lthData := len(data) if lthData == 0 { return str } lthCol := len(data[0]) col := make([]string, lthCol) tempLthData := 0 for k := range data[0] { if tempLthData == lthCol-1 { str += "`" + k + "`) " } else { str += "`" + k + "`," } col[tempLthData] = k tempLthData++ } str += " values" for j := 0; j < lthData; j++ { for m := 0; m < lthCol; m++ { if m == 0 { str += "(" } v := "NULL" if data[j][col[m]] != nil { v = "'" + strings.Replace(ObjToStr(data[j][col[m]]), "'", `\'`, -1) + "'" } if m == lthCol-1 { str += v + ") " } else { str += v + "," } } if j == lthData-1 { str += ";\r\n\r\n" } else { str += ",\r\n\r\n" } } return str }