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 for more details.

  • extract <file.csv>: run an interactive wizard to import a csv file. you can map columns, select which ones to import, and apply regex filters to include/exclude specific rows.
  • search <value> [targets...]: search for a value across one or more tables and columns.
  • export [table_names...]: export one or more tables to csv files.
    • if one table is specified, runs a full interactive wizard.
    • if multiple tables are specified (or none, for all tables), runs a bulk export. you can choose to configure filters for specific tables.
  • delete <table_name>: delete a table from the database.
  • sql "<query>": execute a raw sql query on the database.
  • purge: delete all tables from the database.

Command Groups

these commands group related functionality.

tables

manage and view tables.

  • tables list: list all tables in the database.
    • --description <text>: filter by text in the description.
    • --rows <min_count>: filter by minimum row count.
    • --date <yyyy-mm-dd>: filter by tables created on or after a certain date.
    • --sort <name|rows|date>: sort the output.
  • tables edit [table_name]: interactively edit a table's metadata (name, description, or date). if table_name is omitted, a selector will be shown.

settings

manage application settings. running csvcatalog settings will show current settings.

  • settings dbfile <path>: set a custom path for the database file.
  • settings encryption <true|false>: enable or disable database encryption.

filters

manage saved reusable regex filters for extract and export. running csvcatalog filters will list all saved filters.

  • filters add <name> <regex>: create a new named filter.
  • filters remove [name]: remove a filter by name, or run interactively if no name is provided.

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.20.tar.gz (20.8 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.20-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: csvcatalog-2.20.tar.gz
  • Upload date:
  • Size: 20.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.20.tar.gz
Algorithm Hash digest
SHA256 66e5e60df4c32e4416f444174e0371ee5ffffb7e3e10f1232148ffa839012a60
MD5 30ace84148f598b30a263f8613c886f5
BLAKE2b-256 3f2a65385edc2d65d6186ab672abc28537cda649d14b8876b874bc95e25b72f2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csvcatalog-2.20-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.21 {"installer":{"name":"uv","version":"0.9.21","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.20-py3-none-any.whl
Algorithm Hash digest
SHA256 48ca8f85c915f05b76560b4e494fba8be0df8704192b13c4832f2f165c2de08c
MD5 c2438a1dea1eee0f9c72945354d179a9
BLAKE2b-256 e06ee7afae234faa8fa3dc964777296e5e8de48a294a4d3671887cf8afb3b5bb

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