The csv-conduit package

[Tags: bsd3, library]

CSV files are the de-facto standard in many situations involving data transfer, particularly when dealing with enterprise application or disparate database systems.

While there are a number of CSV libraries in Haskell, at the time of this project's start in 2010, there wasn't one that provided all of the following:

This library is an attempt to close these gaps. Please note that this library started its life based on the enumerator package and has recently been ported to work with conduits instead. In the process, it has been greatly simplified thanks to the modular nature of the conduits library.

Following the port to conduits, the library has also gained the ability to parameterize on the stream type and work both with ByteString and Text.

For more documentation and examples, check out the README at:

http://github.com/ozataman/csv-conduit


[Skip to ReadMe]

Properties

Versions0.1, 0.2, 0.2.1.1, 0.3, 0.3.0.1, 0.3.0.2, 0.3.0.3, 0.4.1, 0.5.0, 0.5.1, 0.6.2, 0.6.2.1, 0.6.3, 0.6.5, 0.6.6
Change logNone available
Dependenciesattoparsec (>=0.10), attoparsec-conduit, base (==4.*), bytestring, conduit (==0.4.*), containers (>=0.3), directory, monad-control, safe, text, transformers (>=0.2), unix-compat (>=0.2.1.1) [details]
LicenseBSD3
AuthorOzgun Ataman
MaintainerOzgun Ataman <ozataman@gmail.com>
CategoryData
Home pagehttp://github.com/ozataman/csv-conduit
UploadedMon Apr 9 08:04:35 UTC 2012 by OzgunAtaman
DistributionsDebian:0.6.6, LTSHaskell:0.6.6, NixOS:0.6.6, Stackage:0.6.6
Downloads3663 total (204 in last 30 days)
Votes
0 []
StatusDocs uploaded by user
Build status unknown [no reports yet]

Modules

[Index]

Downloads

Maintainers' corner

For package maintainers and hackage trustees

Readme for csv-conduit-0.1

README

CSV Files and Haskell

CSV files are the de-facto standard in many cases of data transfer, particularly when dealing with enterprise application or disparate database systems.

While there are a number of csv libraries in Haskell, at the time of this project's start in 2010, there wasn't one that provided all of the following:

This library is an attempt to close these gaps.

This package

csv-conduit is a conduits based CSV parsing library that is easy to use, flexible and fast. Furthermore, it provides ways to use constant-space during operation, which is absolutely critical in many real world use cases.

Introduction

Speed

While fast operation is of concern, I have so far cared more about correct operation and a flexible API. Please let me know if you notice any performance regressions or optimization opportunities.

Usage Examples

Example 1: Basic Operation

{-# LANGUAGE OverloadedStrings #-}

import Data.Conduit.Text
import Data.Conduit.Binary
import Data.Conduit
import Data.CSV.Conduit

-- Let's simply stream from a file, parse the CSV, reserialize it
-- and push back into another file.
test :: IO ()
test = runResourceT $ 
  sourceFile "test/BigFile.csv" $= 
  decode utf8 $=
  (intoCSV defCSVSettings 
    :: forall m. MonadResource m => Conduit Text m (MapRow Text)) $= 
  fromCSV defCSVSettings $=
  encode utf8 $$
  sinkFile "test/BigFileOut.csv"

and we are done.