package main import ( "dsSupport/Utils/CommonUtil" "dsSupport/Utils/DbUtil" "fmt" ) var db = DbUtil.Engine func main() { //1、读取每一张需要创建的表 sql := "select * from t_dw_table" list, _ := db.SQL(sql).Query().List() for i := range list { tableId := list[i]["table_id"].(int64) tableName := list[i]["table_name"].(string) createTableSql := `DROP TABLE IF EXISTS "public"."` + tableName + `";` + "\r\n" createTableSql += `CREATE TABLE "public"."` + tableName + `" (` + "\r\n" //2、根据表名,获取相应的创建表的信息 sql = `select * from t_dw_table_field where table_id=?` list2, _ := db.SQL(sql, tableId).Query().List() for i2 := range list2 { dataType := list2[i2]["data_type"].(string) fieldLength := list2[i2]["field_length"].(int64) isNull := list2[i2]["is_null"].(int64) fieldName := list2[i2]["field_name"].(string) var c = "" if dataType == "int" { c = "int" + CommonUtil.ConvertInt64ToString(fieldLength) } else { c = dataType + "(" + CommonUtil.ConvertInt64ToString(fieldLength) + ") " + ` COLLATE "pg_catalog"."default"` } if isNull == 0 { c += " NOT NULL," } else { if i2 < len(list2)-1 { c += "," } } createTableSql += `"` + fieldName + `" ` + c + "\r\n" } createTableSql += `);` + "\r\n" //添加生成字段描述信息 for i2 := range list2 { fieldName := list2[i2]["field_name"].(string) comment := list2[i2]["comment"] if comment != nil && len(comment.(string)) > 0 { createTableSql += `COMMENT ON COLUMN "public"."` + tableName + `"."` + fieldName + `" IS '` + comment.(string) + `';` + "\r\n" } } //主键有哪些 var pks = "" for i2 := range list2 { fieldName := list2[i2]["field_name"].(string) isPk := list2[i2]["is_pk"].(int64) if isPk == 1 { pks += fieldName + "," } } //去掉最后一个逗号 pks = pks[0 : len(pks)-1] //添加主键描述 createTableSql += `-- 设置主键` + "\r\n" createTableSql += `ALTER TABLE "public"."` + tableName + `" ADD CONSTRAINT "` + tableName + `_dw_pkey" PRIMARY KEY ("` + pks + `");` + "\r\n" fmt.Println(createTableSql) } }