# What's the difference between CSV.jl and CSVFiles.jl?

**URL:** <https://discourse.julialang.org/t/whats-the-difference-between-csv-jl-and-csvfiles-jl/17950>\
**Category:** New to Julia\
**Created:** [November 24, 2018, 7:51pm UTC](https://discourse.julialang.org/t/whats-the-difference-between-csv-jl-and-csvfiles-jl/17950 "2018-11-24T19:51:46Z")\
**Posts on this page:** 1\
**Showing post:** 22

<div class="post-metadata">

**Author:** ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)\
**Post date:** [January 28, 2020, 1:08am UTC](https://discourse.julialang.org/t/whats-the-difference-between-csv-jl-and-csvfiles-jl/17950/22 "2020-01-28T01:08:50Z")

</div>

> [@Juan](#):
>
> What package let’s you read a file using a “select=columnnames” option to select the columns you want?

I added something like that to [CSVFiles.jl](https://github.com/queryverse/CSVFiles.jl) recently:

```julia
load("foo.csv", colparsers=Dict(:colA=>nothing, :colC=>nothing)) |> DataFrame

```

Essentially when you assign `nothing` as the colparser for a given column, it will be skipped entirely.

What I don’t have yet is a nice (positive) column selection API. My goal is to make

```julia
load("foo.csv") |> @select(:colA, :colB)

```

work with this, i.e. even though it would look as if you are selecting columns after they are read, the design of [Query.jl](https://github.com/queryverse/Query.jl) and [CSVFiles.jl](https://github.com/queryverse/CSVFiles.jl) is such that I can get this to never actually read any column other than `colA` and `colB`. The goal is to support the full column selection story from the [`@select`](https://www.queryverse.org/Query.jl/stable/standalonequerycommands/#The-@select-command-1) command.

---

_[View the full topic](https://discourse.julialang.org/t/whats-the-difference-between-csv-jl-and-csvfiles-jl/17950)._
