clojure
[net.cgrand/csv "0.1.4"]
clojure
(ns your-namespace
(:require [clojure-csv.core :as csv]))
clojure
(defn read-csv [file-path]
(with-open [reader (io/reader file-path)]
(doall (csv/parse-csv reader))))
clojure
(defn write-csv [data file-path]
(with-open [writer (io/writer file-path)]
(csv/write-csv writer data)))
clojure
(defn process-csv-stream [input-file output-file]
(with-open [input-stream (io/input-stream input-file)
output-stream (io/output-stream output-file)]
(let [csv-reader (csv/parse-csv-stream input-stream)
csv-writer (csv/generate-csv-stream output-stream)]
(doseq [row csv-reader]
(csv/writerow csv-writer row)))))
clojure
(defn process-large-csv [file-path]
csv-data (-> file-path
(io/reader)
(csv/parse-csv))]
(doseq [chunk (partition-all chunk-size csv-data)]
(process-chunk chunk))))