美文网首页彬哥Go语言笔记Golang语言社区
彬哥笔记 --14 Go语言 游戏服务器数据统计导出CSV功能简

彬哥笔记 --14 Go语言 游戏服务器数据统计导出CSV功能简

作者: Golang语言社区 | 来源:发表于2018-12-30 13:00 被阅读16次

          大家好,我是彬哥,本节给大家讲下go语言服务器游戏数据统计相关,抛砖引玉了,主要是针对活动游戏数据库导出数据的需求。

    代码如下:

    func GetCQJB_LingQu_Info(TimeStart, TimeEnd string) string {
        // 获取数据
        strSql := "select * from t_CQJB_lingquBak where time <  " + TimeEnd + "  AND time > " + TimeStart
        Rows, err := GetMySQL().Query(strSql)
        defer Rows.Close()
        if err != nil {
            glog.Info("GetAcount_OutTime_Data err:" + err.Error())
            return ""
        }
        // 二维数组
        var data [][]string
        data = append(data, []string{"id", "姓名", "手机", "中奖信息", "中奖时间"})
        indexNUM := 1
        // 取数据
        for Rows.Next() {
            gameinfo := new(MysqlST)
            gameinfosend := new(MysqlSTbak)
            Rows.Scan(&gameinfo.id, &gameinfo.mobi, &gameinfo.data, &gameinfo.time)
            // 1 查分 gameinfo.data
            datass := strings.Split(gameinfo.data, "|")
            if len(datass) == 2 {
                // 2 查询中奖名字
    
                gameinfosend.id = gameinfo.id
                gameinfosend.name = datass[0]
                gameinfosend.mobi = gameinfo.mobi
                sss, _ := strconv.Atoi(datass[1])
                gameinfosend.jiangpin = JiangPin[sss]
                // 3 时间戳转时间
                int64time, _ := strconv.ParseInt(gameinfo.time, 10, 64)
                tm := time.Unix(int64time, 0)
                gameinfosend.time = tm.Format("2006-01-02 03:04:05")
                // 4 保存数据
                data = append(data, []string{strconv.Itoa(indexNUM), datass[0], gameinfo.mobi, JiangPin[sss], tm.Format("2006-01-02 03:04:05 PM")})
                indexNUM++
            }
    
        }
        // 5 写csv文件
        int64timestart, _ := strconv.ParseInt(TimeStart, 10, 64)
        int64timeend, _ := strconv.ParseInt(TimeEnd, 10, 64)
        tm1 := time.Unix(int64timestart, 0)
        tm2 := time.Unix(int64timeend, 0)
        f, err := os.Create("/var/www/html/CSV_CQJB/" + tm1.Format("2006-01-02") + "至" + tm2.Format("2006-01-02") + ".csv") //创建文件
        if err != nil {
            panic(err)
        }
        defer f.Close()
        f.WriteString("\xEF\xBB\xBF") // 写入UTF-8 BOM
        w := csv.NewWriter(f)         //创建一个新的写入文件流
        w.WriteAll(data)              //写入数据
        w.Flush()
    
        return "CSV_CQJB/" + tm1.Format("2006-01-02") + "至" + tm2.Format("2006-01-02") + ".csv"
    }
    

    注:
    游戏服务器的数据库都会配置一台作为数据统计的服务器,主要目的是做数据分析,具体设计请参考社区框架LollipopGo框架设计

          每天坚持学习1小时Go语言,大家加油,我是彬哥,下期见!如果文章中不同观点、意见请文章下留言或者关注下方订阅号反馈!


    社区交流群:221273219
    Golang语言社区论坛 :
    www.Golang.Ltd
    LollipopGo游戏服务器地址:
    https://github.com/Golangltd/LollipopGo
    社区视频课程课件GIT地址:
    https://github.com/Golangltd/codeclass


    Golang语言社区

    相关文章

      网友评论

        本文标题:彬哥笔记 --14 Go语言 游戏服务器数据统计导出CSV功能简

        本文链接:https://www.haomeiwen.com/subject/zxrvlqtx.html