Golang导出csv记录

package main

import (
    "encoding/csv"
    "flag"
    "fmt"
    "github.com/garyburd/redigo/redis"
    "os"
    "runtime"
    "time"
)

func main() {
    flag.Parse()
    runtime.GOMAXPROCS(runtime.NumCPU())

    file, err := os.OpenFile(fmt.Sprintf("./%s.csv", time.Now().Format("20060102")), os.O_CREATE|os.O_RDWR, 0644)
    if err != nil {
        fmt.Println("open file is failed, err: ", err)
    }
    defer file.Close()
    // 写入UTF-8 BOM,防止中文乱码
    file.WriteString("\xEF\xBB\xBF")
    w := csv.NewWriter(file)
    w.Write([]string{"uid", "手机号", "次数"})
    defer w.Flush()
    redisMgr := redix.NewRedis()
    defer redisMgr.Close()

    byteSlices, _ := redis.ByteSlices(redisMgr.Do("ZREVRANGE", "ACTIVITY:QIXI-WINNING", 0, 9, "WITHSCORES"))
    for i := 0; i < len(byteSlices); i++ {
        if i%2 == 1 {
            uid := string(byteSlices[i-1])
            user := new(models.User)
            db.NewXorm().SQL(" SELECT id, mobile FROM `user` WHERE id = ? ", uid).Get(user)
            if user.Id == 0 {
                continue
            }
            score := string(byteSlices[i])
            w.Write([]string{
                uid,
                user.Mobile,
                score
            })
        }
    }
    fmt.Println("Success.")
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容