1 Star 0 Fork 1

joccau / orc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
main.go 1013 Bytes
一键复制 编辑 原始数据 按行查看 历史
joccau 提交于 2024-03-29 13:25 . update pkg from scritchley to joccau
package main
import (
"encoding/csv"
"flag"
"fmt"
"log"
"os"
"strings"
"gitee.com/joccau/orc"
)
var (
filepath = flag.String("f", "", "the json file to convert")
cols = flag.String("c", "", "the columns to read")
)
func main() {
flag.Parse()
w := csv.NewWriter(os.Stdout)
r, err := orc.Open(*filepath)
if err != nil {
log.Fatal(err)
}
selected := r.Schema().Columns()
if *cols != "" {
selected = strings.Split(*cols, ",")
}
c := r.Select(selected...)
defer c.Close()
vals := make([]interface{}, len(selected))
ptrVals := make([]interface{}, len(selected))
strVals := make([]string, len(selected))
for i := range vals {
ptrVals[i] = &vals[i]
}
for c.Stripes() {
for c.Next() {
err := c.Scan(ptrVals...)
if err != nil {
log.Fatal(err)
}
for i := range ptrVals {
strVals[i] = fmt.Sprint(ptrVals[i])
}
err = w.Write(strVals)
if err != nil {
log.Fatal(err)
}
}
}
w.Flush()
if err := c.Err(); err != nil {
log.Fatal(err)
}
}
Go
1
https://gitee.com/joccau/orc.git
git@gitee.com:joccau/orc.git
joccau
orc
orc
v1.0.0

搜索帮助