func main() { cpuCount := runtime.NumCPU() runtime.GOMAXPROCS(cpuCount) flag.Usage = func() { fmt.Println("Usage: csv_exporter [options] > filename") flag.PrintDefaults() } flag.Parse() ds := dsFlags.CreateDataset() if ds == nil { flag.Usage() return } defer ds.Store().Close() comma, err := csv.StringToRune(*delimiter) if err != nil { fmt.Println(err.Error()) flag.Usage() return } err = d.Try(func() { nomsList, structDesc := csv.ValueToListAndElemDesc(ds.Head().Value(), ds.Store()) csv.Write(nomsList, structDesc, comma, os.Stdout) }) if err != nil { fmt.Println("Failed to export dataset as CSV:") fmt.Println(err) } }
func main() { cpuCount := runtime.NumCPU() runtime.GOMAXPROCS(cpuCount) flag.Usage = func() { fmt.Println("Usage: csv_importer [options] file\n") flag.PrintDefaults() } flag.Parse() if flag.NArg() != 1 { fmt.Printf("Expected exactly one parameter (path) after flags, but you have %d. Maybe you put a flag after the path?\n", flag.NArg()) flag.Usage() return } path := flag.Arg(0) if path == "" { flag.Usage() return } res, err := os.Open(path) d.Exp.NoError(err) defer res.Close() comma, err := csv.StringToRune(*delimiter) if err != nil { fmt.Println(err.Error()) flag.Usage() return } r := csv.NewCSVReader(res, comma) var headers []string if *header == "" { headers, err = r.Read() d.Exp.NoError(err) } else { headers = strings.Split(*header, string(comma)) } if *reportTypes { kinds := csv.ReportValidFieldTypes(r, headers) d.Chk.Equal(len(headers), len(kinds)) fmt.Println("Possible types for each column:") for i, key := range headers { fmt.Printf("%s: %s\n", key, strings.Join(csv.KindsToStrings(kinds[i]), ",")) } return } ds := dsFlags.CreateDataset() if ds == nil { flag.Usage() return } defer ds.Store().Close() kinds := []types.NomsKind{} if *columnTypes != "" { kinds = csv.StringsToKinds(strings.Split(*columnTypes, ",")) } value, _, _ := csv.Read(r, *name, headers, kinds, ds.Store()) _, err = ds.Commit(value) d.Exp.NoError(err) }