Skip to main content

tool for creating catalog from .csv tables in sqlite storage

Project description

CSVCatalog

a simple cli tool for wrangling csv files and shoving them into a sqlite database. no more manual scripts, no more headaches

What's this? 🤔

tired of messing around with csvs and databases separately? me too. that's why i built catalog. it's a simple, no-nonsense tool that lets you:

  • import csv files into a sqlite database with an interactive wizard.
  • search your data with a powerful, flexible query syntax.
  • export your data back to csv whenever you need it.
  • manage your database with a set of easy-to-use commands.

Getting Started 🚀

  1. install
pip install csvcatalog
  1. run a command

the basic structure is csvcatalog COMMAND [ARGS]. for example, to see all tables:

csvcatalog --help

by default, the database is stored in a user-specific data directory. you can specify a custom database file with the dbfile command:

# Optional
csvcatalog settings dbfile /path/to/your/database.db

you can setup aes256 encryption for database file

# Optional
csvcatalog settings encryption true
  1. extract your csv data table
csvcatalog extract path/to/my/data.csv

Commands 🕹️

typer provides help for all commands. just run csvcatalog --help or csvcatalog <command> --help.

  • --help: get detailed help and command list
  • extract <file.csv> <Optional: --encoding name>: run an interactive wizard to import a csv file into the database. you'll be prompted to set the separator, rename columns, select columns to import, and name the table with file encoding.
  • tables: list all tables in the database, with their columns and row counts.
  • search <value> [targets...]: search for a value. this is the most powerful command.
  • sql "<query>": execute a raw sql query on the database.
  • export <optional: table_name>: export a table to a csv file, with an interactive prompt to select columns and limit rows.
  • delete <table_name>: delete a table from the database.
  • purge: delete all tables from the database.
  • settings --help: settings help.
  • settings show: show current settings
  • settings dbfile <path/to/storage.db>: set custom db path.
  • settings encryption <true/false>: enable encryption

the mighty search command

the search command lets you specify exactly where to look for your data. a "target" can be a table, a specific column in a table, or a column across all tables.

search for a value in all tables (default behavior):

# looks for 'jane' everywhere
csvcatalog search "jane"

search for a value in specific tables:

# looks for 'jane' in the 'users' and 'customers' tables
csvcatalog search "jane" users customers

search for a value in a specific column of a specific table:

# looks for the email in the 'email' column of the 'users' table
csvcatalog search "jane.doe@example.com" users.email

search for a value in a specific column across all tables:

# finds any entry with a 'status' of 'active' in any table
csvcatalog search "active" "*.status"

combine any of these targets in one command:

# a totally valid and powerful query
csvcatalog search "jane" users.name products

contributing are welcome 🤝

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

csvcatalog-2.10.tar.gz (16.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

csvcatalog-2.10-py3-none-any.whl (20.5 kB view details)

Uploaded Python 3

File details

Details for the file csvcatalog-2.10.tar.gz.

File metadata

  • Download URL: csvcatalog-2.10.tar.gz
  • Upload date:
  • Size: 16.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for csvcatalog-2.10.tar.gz
Algorithm Hash digest
SHA256 f8b34a72e4419bb6ab97d689108d275e4ae506d4167bf7a848503c793a36e7b5
MD5 03a15d6c5465c2970b14c48fdcac2f43
BLAKE2b-256 26867b0e3bc73f7460f080d6d41efc5bb76f0a278c366941ed32ff89dfbf0904

See more details on using hashes here.

File details

Details for the file csvcatalog-2.10-py3-none-any.whl.

File metadata

  • Download URL: csvcatalog-2.10-py3-none-any.whl
  • Upload date:
  • Size: 20.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for csvcatalog-2.10-py3-none-any.whl
Algorithm Hash digest
SHA256 56aa673e2c839214d842b64ee7c1db8f15b941d26cc7fc42f9b225637bc8c211
MD5 293a73e935b09c7ca7f1181acfabaf9e
BLAKE2b-256 15061433e8e1165d48450120311f3b0c1585a7114cfd9bf4c618f641e99ba10a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page