Lots of CSVs

Lots of CSVs (lotsofcsvs) is a small data warehouse built with CSV and HTTP as its interface. It is intentionally as barebones as possible. It aims to be a simple API for recording and fetching data that works with everything.

The original motivation for it was to create a data API that you could use from iOS Shortcuts. Here is a template shortcut that you can modify.

# Documentation: The API
#
# Get a dataset as CSV
# dataset/names/can/be/paths/like/this.csv so you can use them for organization
curl -H "authorization: Bearer <token>" /api/u/user_name/path/to/cool_data.csv
# Append to the dataset
# The .csv suffix is optional and you can use paths to name your datasets.
cat example.csv | curl -X POST -H "Content-Type: text/csv; header=absent"
     -H "authorization: Bearer <token>" \
     https://www.lotsofcsvs.com/api/u/<your_username>/totally/going/to/delete/example --data-binary @-
# You can post as many rows as you want.
# Use the header=present (or header=absent) variable in the mimetype.
# When in doubt follow https://www.rfc-editor.org/rfc/rfc4180
# If you are appending to a dataset that doesn't exist it will be created.
# You must send the CSV headers the first time you post to it.
# Otherwise lotsofcsvs has to guess at the names and we're not doing that.
#
# If you need a CSV to test with, we have one.
curl -o example.csv https://www.lotsofcsvs.com/example.csv
cat example.csv | curl -X POST -H "Content-Type: text/csv; header=present" \
     -H "authorization: Bearer <token>" \
     https://www.lotsofcsvs.com/api/u/<your_username>/example.csv --data-binary @-
# Exporting your whole dataset
# As a zip file of CSVs (coming soon)
curl -H "authorization: Bearer <token>" /api/u/user_name.zip
# As a tarball of CSVs (coming soon)
curl -H "authorization: Bearer <token>" /api/u/user_name.tar.gz
# using DuckDB
duckdb
CREATE SECRET http (
        TYPE HTTP,
        EXTRA_HTTP_HEADERS MAP {
          'authorization': 'Bearer <token>'
          }
        );
CREATE TABLE example
   AS SELECT * FROM read_csv('https://www.lotsofcsvs.com/example.csv');
CREATE TABLE your_table_name
   AS SELECT * FROM read_csv('https://www.lotsofcsvs.com/api/u/<username>/your.csv');
# It is also LLM friendly. There is a prompt telling LLMs how to use this site
# hidden in this page. Also, if you programmatically fetch this page
# it will return the prompt, similar to https://docs.jina.ai/.
curl -L https://www.lotsofcsvs.com/