先用一下,程序的结构不好,以后再重构一下
package main
import (
//"bufio" //缓存IO
"fmt"
"os"
"strings"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
func init() {
// orm.RegisterDataBase("default", "mysql", "root:root@tcp(192.168.224.128:3306)/cloudta?charset=utf8")
dbhost := beego.AppConfig.String("dbhost")
dbport := beego.AppConfig.String("dbport")
dbuser := beego.AppConfig.String("dbuser")
dbpassword := beego.AppConfig.String("dbpassword")
db := beego.AppConfig.String("db")
//注册mysql Driver
orm.RegisterDriver("mysql", orm.DR_MySQL)
//构造conn连接
conn := dbuser + ":" + dbpassword + "@tcp(" + dbhost + ":" + dbport + ")/" + db + "?charset=utf8"
//注册数据库连接
orm.RegisterDataBase("default", "mysql", conn)
fmt.Printf("数据库连接成功!%s\n", conn)
}
type Cloumns struct {
Column_name string
}
type Tablenames struct {
Table_name string
}
func main() {
var err error
var cloumn []Cloumns
var tablename []Tablenames
var querysql string
db := beego.AppConfig.String("db")
intablename := beego.AppConfig.String("tablename")
if intablename == "*" {
querysql = "select table_name from information_schema.tables where table_schema= " + "'" + db + "'"
} else {
querysql = "select table_name from information_schema.tables where table_schema= " + "'" + db + "'" + " and table_name = " + "'" + intablename + "'"
}
o := orm.NewOrm()
f, err := os.Create("./inserttable.sql")
if err != nil {
fmt.Println("open file error!!")
}
defer f.Close()
//get tablename from database
_, errs := o.Raw(querysql).QueryRows(&tablename)
if errs != nil {
fmt.Printf("errors: %s\n", errs)
}
for _, v := range tablename {
//get each column from every table
_, err := o.Raw(" select lower(column_name) column_name from information_schema.COLUMNS where table_name = ? ", v.Table_name).QueryRows(&cloumn)
if err != nil {
fmt.Printf("errors: %s\n", err)
}
atcloumn := make([]string, len(cloumn))
vfield := make([]string, len(cloumn))
for i, v := range cloumn {
atcloumn[i] = "@" + v.Column_name
vfield[i] = v.Column_name + " = " + atcloumn[i]
}
head := "-- 创建" + "[" + v.Table_name + "]" + " ..... " + "\n"
slog := "[日志记录][CNST_LOG_DEBUG]" + "[\"" + v.Table_name + "表增加\"]" + "[" + strings.Join(atcloumn, ",") + "]" + "\n"
inserttable := "[插入表记录][" + v.Table_name + "][" + strings.Join(vfield, ",\n") + "]" + "\n"
serr := "[插入报错返回][ERR_ADD_RECORD_FAIL][增加流程监控记录表(" + v.Table_name + "失败][@error_id,@error_sysinfo]" + "\n\n"
f.WriteString(head + slog + inserttable + serr)
}
f.Close()
}
conf下的app.conf的配置内容
dbhost =”192.168.224.128”
dbport = “3306”
dbuser =”root”
dbpassword = “root”
db =”cloudta”
/* 如果要 查找所有表,则改成 tablename = “*” */
tablename = “ta_tfundinfo”