@@ -25,7 +25,6 @@ import (
2525 "fmt"
2626 "io"
2727 "io/ioutil"
28- "log"
2928 "os"
3029 "path"
3130 "strings"
@@ -67,6 +66,7 @@ merged-data.csv..
6766 outputFName string
6867
6968 // App Options
69+ verbose bool
7070 csv1FName string
7171 csv2FName string
7272 col1 int
@@ -150,6 +150,7 @@ func init() {
150150 flag .StringVar (& outputFName , "output" , "" , "output filename" )
151151
152152 // App Options
153+ flag .BoolVar (& verbose , "verbose" , false , "output processing count to stderr" )
153154 flag .StringVar (& csv1FName , "csv1" , "" , "first CSV filename" )
154155 flag .StringVar (& csv2FName , "csv2" , "" , "second CSV filename" )
155156 flag .IntVar (& col1 , "col1" , 0 , "column to on join on in first CSV file" )
@@ -261,14 +262,17 @@ func main() {
261262
262263 stopWords := strings .Split (stopWordsOption , ":" )
263264 w := csv .NewWriter (out )
264- for _ , rowA := range csv1Table {
265+ for i , rowA := range csv1Table {
265266 if col1 < len (rowA ) && rowA [col1 ] != "" {
266267 // We are relying on the side effect of writing the CSV output in scanTable
267268 scanTable (w , rowA , col1 , csv2Table , col2 , stopWords )
269+ w .Flush ()
270+ if err := w .Error (); err != nil {
271+ fmt .Fprintf (os .Stderr , "Can't write CSV at line %d of csv table 1, %s" , i , err )
272+ }
273+ }
274+ if verbose == true && (i % 100 ) == 0 {
275+ fmt .Fprintf (os .Stderr , "%d rows of csv table 1 processed\n " , i )
268276 }
269- }
270- w .Flush ()
271- if err := w .Error (); err != nil {
272- log .Fatal (err )
273277 }
274278}
0 commit comments