123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package dbBase
- import (
- "database/sql"
- "fmt"
- "log"
- "strconv"
- "xg_once_query/setting"
- "github.com/jedib0t/go-pretty/v6/table"
- )
- func TablePrint(rows *sql.Rows, colHeads []string, pvals []interface{}) {
- //log.Println("TablePrint")
- // 表列名
- t := table.NewWriter()
- var header table.Row
- for _, v := range colHeads {
- header = append(header, v)
- }
- t.AppendHeader(header)
- for rows.Next() {
- err := rows.Scan(pvals...)
- if err != nil {
- //log.Fatal(err)
- log.Println(err)
- break
- }
- var row table.Row
- for v := range pvals {
- row = append(row, string(*(pvals[v].(*[]byte))))
- // log.Println("len row : ", len(row))
- // log.Println("row", row)
- }
- t.AppendRow(row)
- }
- //输出命令行表格
- fmt.Println(t.Render())
- }
- func TablePrints(rows *sql.Rows, colHeads []string, pvals []interface{}) {
- //输出表列名参数
- //n group组 = colHeads / cplLimit 49 ... / 5 = 9 余4 cols[n group组:cplLimit]
- colLimit, _ := strconv.Atoi(setting.SInfo.ColLimit)
- if len(colHeads) < colLimit {
- colLimit = len(colHeads)
- }
- group := len(colHeads) / colLimit
- remainder := len(colHeads) % colLimit
- colLimitTmp := colLimit
- colStart := 0
- //输出表数据
- var pv2 [][]string
- for rows.Next() {
- err := rows.Scan(pvals...)
- if err != nil {
- //log.Fatal(err)
- log.Println(err)
- }
- copiedSlice := make([]string, len(pvals))
- for i, val := range pvals {
- // 使用 interface{} 类型进行深拷贝,并将结果存储到 copiedSlice 中
- copiedSlice[i] = string(*val.(*[]byte))
- }
- pv2 = append(pv2, copiedSlice)
- }
- for i := 0; i < group+1; i++ {
- colSTmp := colStart
- colLTmp := colLimitTmp
- //表列名
- t := table.NewWriter()
- var header table.Row
- colTmp := colHeads[colStart:colLimitTmp]
- for _, v := range colTmp {
- header = append(header, v)
- }
- t.AppendHeader(header)
- //表数据
- for v := range pv2 {
- var row table.Row
- abc := pv2[v][colSTmp:colLTmp]
- for v2 := range abc {
- row = append(row, abc[v2])
- }
- t.AppendRow(row)
- }
- colStart = colLimitTmp
- if colLimitTmp < len(colHeads)-remainder {
- colLimitTmp += colLimit
- } else {
- colLimitTmp = len(colHeads)
- }
- //输出命令行表格
- fmt.Println(t.Render())
- }
- }
|