diff --git a/csv.go b/csv.go
index <HASH>..<HASH> 100644
--- a/csv.go
+++ b/csv.go
@@ -442,3 +442,28 @@ func CSVToMaps(reader io.Reader) ([]map[string]string, error) {
 	}
 	return rows, nil
 }
+
+// CSVToChanMaps parses the CSV from the reader and send a dictionary in the chan c, using the header row as the keys.
+func CSVToChanMaps(reader io.Reader, c chan <-map[string]string) error {
+	r := csv.NewReader(reader)
+	var header []string
+	for {
+		record, err := r.Read()
+		if err == io.EOF {
+			break
+		}
+		if err != nil {
+			return err
+		}
+		if header == nil {
+			header = record
+		} else {
+			dict := map[string]string{}
+			for i := range header {
+				dict[header[i]] = record[i]
+			}
+			c <- dict
+		}
+	}
+	return nil
+}
allow channel use with CSVToMaps