Settings

Theme

Show HN: CSVFiddle – Query CSV files with DuckDB in the browser

csvfiddle.io

64 points by shbhrsaha 3 years ago · 13 comments

Reader

shbhrsahaOP 3 years ago

Hey HN,

I made CSVFiddle because I wanted a quick way to query CSV files with SQL and share the results with other people.

The app runs 100% in-browser, so the data you import and the queries you write are never sent to a web server. When you share the URL to a workspace, all of its queries and references to CSV files are just encoded in the URL fragment.

In-browser querying is made possible by DuckDB-Wasm, which has been an awesome project to work with:

https://duckdb.org/2021/10/29/duckdb-wasm.html

There are definitely limitations with CSVFiddle (e.g. sometimes the auto-parsing feature doesn't accurately interpret the imported files), but so far it's been useful for a range of data tasks.

Some demo workspaces you can check out:

University Students by State https://tinyurl.com/6k35anth

Uber Pickups in NYC https://tinyurl.com/5n8av39h

  • kjksf 3 years ago

    Do you have an option to use a .csv from url, e.g.: https://csvfiddle.io/?url=https://foo.com/bar.csv

    If not, could you implement it?

    I ask because I'm working on a web-based file manager (https://filerion.com/)

    One of the feature ideas I have is letting people to view CSV files.

    I don't want to implement my own csv viewer and would rather integrate with tools like csvfiddle.

    I.e. the user would right-click on a .csv file in my file manager, one of the options would be "View in CSVFiddle".

    When chosen, I would create publicly visible, CORS-compatible url for the .csv file (so that you can fetch() it) and launch cvsfiddle.io?url=<url> in a new window.

  • shubhamjain 3 years ago

    Does it work with really large files? Like, >100mb or so. I was considering making something similar but with sqlite.js [1], but the problem with it is that it loads everything in memory, so I wasn't entirely sure how it will deal with larger workloads.

    [1]: https://sql.js.org/#/

danso 3 years ago

By no means am I crapping on what you've created — it looks great, and I've always wanted to try DuckDB and now you've made a frictionless entrypoint — just wanted to point out in general that querying CSV with SQL is more accessible than some people might have assumed. e.g. here's a recent TIL blogpost from Simon Willison about him discovering how to do sqlite queries against CSV from the command line: https://til.simonwillison.net/sqlite/one-line-csv-operations

One suggestion I would make: the Uber trips data is interesting, but might be too big for this demo? I was getting a few loading errors when trying it (didn't investigate where in the process the bottleneck was though)

throwamon 3 years ago

Not to discourage you or anything, but Observable seems to cover this without too much hassle:

https://observablehq.com/@cmudig/introducing-sql-with-duckdb

ijidak 3 years ago

This is great.

Will definitely be using this.

I wouldn't worry too much about people focused on running from the command line.

I love the command line. But not as a query interface for quick investigation of CSV data.

I've been wanting something like this for a long time!

Excited to give it a try.

kristianp 3 years ago

I guess if it uses duckdb it can query parquet (and duckdb) files too?

swuecho 3 years ago

very useful tools!

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection