Skip to main content

lancedb-cli

A minimal command line application for managing LanceDB databases. This CLI tool provides an easy interface to query, update, and manage data stored in LanceDB.

Features

  • Query Tables: Retrieve data from LanceDB tables with filtering and column selection
  • Interactive Mode: Interactive SQL shell with command history and completion
  • Direct SQL Execution: Run complex SQL queries against LanceDB databases via DuckDB integration
  • Data Management: Insert, update, delete, and drop records
  • Schema Inspection: View the schema of tables
  • Import/Export: Load data from CSV files and dump tables to CSV format
  • Multiple Output Formats: Display results as formatted tables or JSON
  • Auto-completion: Interactive mode includes SQL keywords and table name completion
  • Safe Operations: Confirmation prompts for destructive operations

Installation

Install the package using pip:

pip install lancedb-cli

Usage

Command Line

Database and Table Management

List all tables in a database:

lsql list-tables /path/to/database

View table schema:

lsql schema /path/to/database my_table

Querying Data

Query a table with filtering and limits:

lsql query /path/to/database my_table --limit 10
lsql query /path/to/database my_table --where "age > 25" --limit 20
lsql query /path/to/database my_table --select "name,email" --where "active=true"

Execute SQL queries directly (using DuckDB):

lsql sql /path/to/database "SELECT * FROM my_table WHERE id > 5"
lsql sql /path/to/database "SELECT name, COUNT(*) FROM my_table GROUP BY name"

Data Modification

Update records:

lsql update /path/to/database my_table \
  --set-clause "name='John',age=30" \
  --where "id=1"

Delete specific records:

lsql delete /path/to/database my_table --where "id=1"
lsql delete /path/to/database my_table --where "age < 18"

Empty a table (delete all rows):

lsql empty /path/to/database my_table

Drop a table permanently:

lsql drop /path/to/database my_table --confirm

Import/Export

Load data from a CSV file:

lsql load /path/to/database my_file.csv my_table
lsql load /path/to/database my_file.csv my_table --overwrite

Export a table to CSV:

lsql dump /path/to/database my_table output.csv
lsql dump /path/to/database employees export.csv --overwrite

Interactive Mode

Start an interactive session:

lsql interactive /path/to/database

Inside the interactive shell, you can:

  • Type SQL queries directly
  • Use special commands:
    • .tables - List all tables
    • .schema <table> - Show table schema
    • .refresh - Refresh all table views
    • .update <table> <set> <where> - Update rows
    • .delete <table> <where> - Delete rows
    • .empty <table> - Empty a table
    • .drop <table> - Drop a table
    • .exit - Exit the interactive shell

Command Options

Common Options

  • --create: Create the database if it doesn't exist (available on most commands)
  • --output <format>: Output format - table (default) or json (for query and sql commands)

Query Command Options

  • --limit N: Limit results to N rows (default: 10)
  • --where <condition>: Filter rows with SQL WHERE clause
  • --select <columns>: Select specific columns (comma-separated)

Update/Delete Options

  • --set-clause <values>: Column=value pairs for updates (e.g., "name='John',age=30")
  • --where <condition>: SQL WHERE clause to specify which rows to modify

Import/Export Options

  • --overwrite: Overwrite existing table (load) or file (dump) if it exists

Safety Options

  • --confirm: Skip confirmation prompts for destructive operations (drop command)

Development

To set up a development environment:

git clone https://github.com/yourusername/lancedb-cli.git
cd lancedb-cli
pip install -e ".[dev]"

Run tests:

pytest

Requirements

  • Python 3.8 or higher
  • lancedb
  • duckdb
  • typer
  • rich
  • prompt-toolkit
  • pygments

Examples

Complete Workflow Example

# Create a new database and load data
lsql load ./my_db employees.csv employees --create

# Query the data
lsql query ./my_db employees --limit 5

# Run SQL analytics
lsql sql ./my_db "SELECT department, AVG(salary) FROM employees GROUP BY department"

# Update specific records
lsql update ./my_db employees --set-clause "salary=50000" --where "id=10"

# Export results
lsql dump ./my_db employees employees_backup.csv

# Interactive exploration
lsql interactive ./my_db

License

Apache License 2.0 - see LICENSE file for details

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Issues

If you encounter any issues or have suggestions, please open an issue on GitHub.

Metadata

Release files for lancedb-cli 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lancedb-cli 0.1.1
File Size Uploaded
lancedb_cli-0.1.1.tar.gz 22.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lancedb-cli 0.1.1
File Interpreter ABI Platform
lancedb_cli-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 36.2 kB

Release files / lancedb_cli-0.1.1.tar.gz

Download URL lancedb_cli-0.1.1.tar.gz
Size 22.2 kB
Tags Source
SHA-256 checksum
How to use checksums
64302660ed7e03be5f0fc167a21b62e574399b7f102d4ce9b23c66669e83f956
BLAKE2b-256 checksum
How to use checksums
2d5814369a8969cd71a0be11e81f090d0ba10de84f479ded1c86eb71af12ad34
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / lancedb_cli-0.1.1-py3-none-any.whl

Download URL lancedb_cli-0.1.1-py3-none-any.whl
Size 14.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eb569b7bd909497bc88c20ba00597ddb90537670239542b213949161bfa148b4
BLAKE2b-256 checksum
How to use checksums
8a939d1999c3c72a4d9ca6ad2da17fd53f9aa8e15ef10d16b20fec6db014d0e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page