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.")
}