mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-09-07 17:14:09 +02:00
The tables and views commands now take one or more optional table (or view) names as positional arguments after the database path, restricting the output to just those tables. This is handy with --counts against a database that has a large table you would rather skip. Names are listed in the order they are passed. If any named table or view does not exist the command raises an error and exits with a non-zero status, so the exit code can be used to confirm a set of expected tables is present. Closes #478
1655 lines
54 KiB
ReStructuredText
1655 lines
54 KiB
ReStructuredText
.. _cli_reference:
|
|
|
|
===============
|
|
CLI reference
|
|
===============
|
|
|
|
This page lists the ``--help`` for every ``sqlite-utils`` CLI sub-command.
|
|
|
|
.. contents:: :local:
|
|
:class: this-will-duplicate-information-and-it-is-still-useful-here
|
|
|
|
.. [[[cog
|
|
from sqlite_utils import cli
|
|
import sys
|
|
sys._called_from_test = True
|
|
from click.testing import CliRunner
|
|
import textwrap
|
|
commands = list(cli.cli.commands.keys())
|
|
go_first = [
|
|
"query", "memory", "insert", "upsert", "bulk", "search", "transform", "extract",
|
|
"schema", "insert-files", "analyze-tables", "convert", "tables", "views", "rows",
|
|
"triggers", "indexes", "create-database", "create-table", "create-index", "drop-index",
|
|
"migrate", "enable-fts", "populate-fts", "rebuild-fts", "disable-fts"
|
|
]
|
|
refs = {
|
|
"query": "cli_query",
|
|
"memory": "cli_memory",
|
|
"insert": [
|
|
"cli_inserting_data", "cli_insert_csv_tsv", "cli_insert_unstructured", "cli_insert_convert"
|
|
],
|
|
"upsert": "cli_upsert",
|
|
"tables": "cli_tables",
|
|
"views": "cli_views",
|
|
"optimize": "cli_optimize",
|
|
"rows": "cli_rows",
|
|
"triggers": "cli_triggers",
|
|
"indexes": "cli_indexes",
|
|
"enable-fts": "cli_fts",
|
|
"analyze": "cli_analyze",
|
|
"vacuum": "cli_vacuum",
|
|
"dump": "cli_dump",
|
|
"add-column": "cli_add_column",
|
|
"rename-table": "cli_renaming_tables",
|
|
"duplicate": "cli_duplicate_table",
|
|
"add-foreign-key": "cli_add_foreign_key",
|
|
"add-foreign-keys": "cli_add_foreign_keys",
|
|
"index-foreign-keys": "cli_index_foreign_keys",
|
|
"create-index": "cli_create_index",
|
|
"drop-index": "cli_drop_index",
|
|
"enable-wal": "cli_wal",
|
|
"enable-counts": "cli_enable_counts",
|
|
"bulk": "cli_bulk",
|
|
"migrate": "cli_migrate",
|
|
"create-database": "cli_create_database",
|
|
"create-table": "cli_create_table",
|
|
"drop-table": "cli_drop_table",
|
|
"create-view": "cli_create_view",
|
|
"drop-view": "cli_drop_view",
|
|
"search": "cli_search",
|
|
"transform": "cli_transform_table",
|
|
"extract": "cli_extract",
|
|
"schema": "cli_schema",
|
|
"insert-files": "cli_insert_files",
|
|
"analyze-tables": "cli_analyze_tables",
|
|
"convert": "cli_convert",
|
|
"add-geometry-column": "cli_spatialite",
|
|
"create-spatial-index": "cli_spatialite_indexes",
|
|
"install": "cli_install",
|
|
"uninstall": "cli_uninstall",
|
|
}
|
|
commands.sort(key = lambda command: go_first.index(command) if command in go_first else 999)
|
|
cog.out("\n")
|
|
for command in commands:
|
|
cog.out(".. _cli_ref_" + command.replace("-", "_") + ":\n\n")
|
|
cog.out(command + "\n")
|
|
cog.out(("=" * len(command)) + "\n\n")
|
|
if command in refs:
|
|
command_refs = refs[command]
|
|
if isinstance(command_refs, str):
|
|
command_refs = [command_refs]
|
|
cog.out(
|
|
"See {}.\n\n".format(
|
|
", ".join(":ref:`{}`".format(c) for c in command_refs)
|
|
)
|
|
)
|
|
cog.out("::\n\n")
|
|
result = CliRunner().invoke(cli.cli, [command, "--help"])
|
|
output = result.output.replace("Usage: cli ", "Usage: sqlite-utils ")
|
|
output = output.replace('\b', '')
|
|
cog.out(textwrap.indent(output, ' '))
|
|
cog.out("\n\n")
|
|
.. ]]]
|
|
|
|
.. _cli_ref_query:
|
|
|
|
query
|
|
=====
|
|
|
|
See :ref:`cli_query`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils query [OPTIONS] PATH SQL
|
|
|
|
Execute SQL query and return the results as JSON
|
|
|
|
Example:
|
|
|
|
sqlite-utils data.db \
|
|
"select * from chickens where age > :age" \
|
|
-p age 1
|
|
|
|
Pass "-" as the SQL to read the query from standard input:
|
|
|
|
echo "select * from chickens" | sqlite-utils data.db -
|
|
|
|
Options:
|
|
--attach <TEXT FILE>... Additional databases to attach - specify alias and
|
|
filepath
|
|
--nl Output newline-delimited JSON
|
|
--arrays Output rows as arrays instead of objects
|
|
--csv Output CSV
|
|
--tsv Output TSV
|
|
--no-headers Omit headers from CSV/TSV and table/--fmt output
|
|
-t, --table Output as a formatted table
|
|
--fmt TEXT Table format - one of asciidoc, colon_grid,
|
|
double_grid, double_outline, fancy_grid,
|
|
fancy_outline, github, grid, heavy_grid,
|
|
heavy_outline, html, jira, latex, latex_booktabs,
|
|
latex_longtable, latex_raw, mediawiki, mixed_grid,
|
|
mixed_outline, moinmoin, orgtbl, outline, pipe,
|
|
plain, presto, pretty, psql, rounded_grid,
|
|
rounded_outline, rst, simple, simple_grid,
|
|
simple_outline, textile, tsv, unsafehtml, youtrack
|
|
--json-cols Detect JSON cols and output them as JSON, not
|
|
escaped strings
|
|
--ascii Escape non-ASCII characters in JSON output as
|
|
\uXXXX
|
|
-r, --raw Raw output, first column of first row
|
|
--raw-lines Raw output, first column of each row
|
|
-p, --param <TEXT TEXT>... Named :parameters for SQL query
|
|
--functions TEXT Python code or a file path defining custom SQL
|
|
functions; can be used multiple times
|
|
--load-extension TEXT Path to SQLite extension, with optional
|
|
:entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_memory:
|
|
|
|
memory
|
|
======
|
|
|
|
See :ref:`cli_memory`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils memory [OPTIONS] [PATHS]... SQL
|
|
|
|
Execute SQL query against an in-memory database, optionally populated by
|
|
imported data
|
|
|
|
To import data from CSV, TSV or JSON files pass them on the command-line:
|
|
|
|
sqlite-utils memory one.csv two.json \
|
|
"select * from one join two on one.two_id = two.id"
|
|
|
|
For data piped into the tool from standard input, use "-" or "stdin":
|
|
|
|
cat animals.csv | sqlite-utils memory - \
|
|
"select * from stdin where species = 'dog'"
|
|
|
|
The format of the data will be automatically detected. You can specify the
|
|
format explicitly using :json, :csv, :tsv or :nl (for newline-delimited JSON)
|
|
- for example:
|
|
|
|
cat animals.csv | sqlite-utils memory stdin:csv places.dat:nl \
|
|
"select * from stdin where place_id in (select id from places)"
|
|
|
|
Use --schema to view the SQL schema of any imported files:
|
|
|
|
sqlite-utils memory animals.csv --schema
|
|
|
|
Options:
|
|
--functions TEXT Python code or a file path defining custom SQL
|
|
functions; can be used multiple times
|
|
--attach <TEXT FILE>... Additional databases to attach - specify alias and
|
|
filepath
|
|
--flatten Flatten nested JSON objects, so {"foo": {"bar":
|
|
1}} becomes {"foo_bar": 1}
|
|
--nl Output newline-delimited JSON
|
|
--arrays Output rows as arrays instead of objects
|
|
--csv Output CSV
|
|
--tsv Output TSV
|
|
--no-headers Omit headers from CSV/TSV and table/--fmt output
|
|
-t, --table Output as a formatted table
|
|
--fmt TEXT Table format - one of asciidoc, colon_grid,
|
|
double_grid, double_outline, fancy_grid,
|
|
fancy_outline, github, grid, heavy_grid,
|
|
heavy_outline, html, jira, latex, latex_booktabs,
|
|
latex_longtable, latex_raw, mediawiki, mixed_grid,
|
|
mixed_outline, moinmoin, orgtbl, outline, pipe,
|
|
plain, presto, pretty, psql, rounded_grid,
|
|
rounded_outline, rst, simple, simple_grid,
|
|
simple_outline, textile, tsv, unsafehtml, youtrack
|
|
--json-cols Detect JSON cols and output them as JSON, not
|
|
escaped strings
|
|
--ascii Escape non-ASCII characters in JSON output as
|
|
\uXXXX
|
|
-r, --raw Raw output, first column of first row
|
|
--raw-lines Raw output, first column of each row
|
|
-p, --param <TEXT TEXT>... Named :parameters for SQL query
|
|
--encoding TEXT Character encoding for CSV input, defaults to
|
|
utf-8
|
|
-n, --no-detect-types Treat all CSV/TSV columns as TEXT
|
|
--schema Show SQL schema for in-memory database
|
|
--dump Dump SQL for in-memory database
|
|
--save FILE Save in-memory database to this file
|
|
--analyze Analyze resulting tables and output results
|
|
--load-extension TEXT Path to SQLite extension, with optional
|
|
:entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_insert:
|
|
|
|
insert
|
|
======
|
|
|
|
See :ref:`cli_inserting_data`, :ref:`cli_insert_csv_tsv`, :ref:`cli_insert_unstructured`, :ref:`cli_insert_convert`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils insert [OPTIONS] PATH TABLE [FILE]
|
|
|
|
Insert records from FILE into a table, creating the table if it does not
|
|
already exist.
|
|
|
|
Example:
|
|
|
|
echo '{"name": "Lila"}' | sqlite-utils insert data.db chickens -
|
|
|
|
By default the input is expected to be a JSON object or array of objects.
|
|
|
|
- Use --nl for newline-delimited JSON objects
|
|
- Use --csv or --tsv for comma-separated or tab-separated input
|
|
- Use --lines to write each incoming line to a column called "line"
|
|
- Use --text to write the entire input to a column called "text"
|
|
|
|
Use --type column-name type to override the type automatically chosen when the
|
|
table is created.
|
|
|
|
You can also use --convert to pass a fragment of Python code that will be used
|
|
to convert each input.
|
|
|
|
Your Python code will be passed a "row" variable representing the imported
|
|
row, and can return a modified row.
|
|
|
|
This example uses just the name, latitude and longitude columns from a CSV
|
|
file, converting name to upper case and latitude and longitude to floating
|
|
point numbers:
|
|
|
|
sqlite-utils insert plants.db plants plants.csv --csv --convert '
|
|
return {
|
|
"name": row["name"].upper(),
|
|
"latitude": float(row["latitude"]),
|
|
"longitude": float(row["longitude"]),
|
|
}'
|
|
|
|
If you are using --lines your code will be passed a "line" variable, and for
|
|
--text a "text" variable.
|
|
|
|
When using --text your function can return an iterator of rows to insert. This
|
|
example inserts one record per word in the input:
|
|
|
|
echo 'A bunch of words' | sqlite-utils insert words.db words - \
|
|
--text --convert '({"word": w} for w in text.split())'
|
|
|
|
Instead of a FILE you can use --code to provide a block of Python code that
|
|
defines the rows to insert, as either a rows() function that yields
|
|
dictionaries or a "rows" iterable. --code can also be a path to a .py file:
|
|
|
|
sqlite-utils insert data.db creatures --code '
|
|
def rows():
|
|
yield {"id": 1, "name": "Cleo"}
|
|
yield {"id": 2, "name": "Suna"}
|
|
' --pk id
|
|
|
|
Options:
|
|
--pk TEXT Columns to use as the primary key, e.g. id
|
|
--code TEXT Python code defining a rows() function or iterable
|
|
of rows to insert
|
|
--flatten Flatten nested JSON objects, so {"a": {"b": 1}}
|
|
becomes {"a_b": 1}
|
|
--nl Expect newline-delimited JSON
|
|
-c, --csv Expect CSV input
|
|
--tsv Expect TSV input
|
|
--empty-null Treat empty strings as NULL
|
|
--lines Treat each line as a single value called 'line'
|
|
--text Treat input as a single value called 'text'
|
|
--convert TEXT Python code to convert each item
|
|
--import TEXT Python modules to import
|
|
--delimiter TEXT Delimiter to use for CSV files
|
|
--quotechar TEXT Quote character to use for CSV/TSV
|
|
--sniff Detect delimiter and quote character
|
|
--no-headers CSV file has no header row
|
|
--encoding TEXT Character encoding for input, defaults to utf-8
|
|
--batch-size INTEGER Commit every X records
|
|
--stop-after INTEGER Stop after X records
|
|
--alter Alter existing table to add any missing columns
|
|
--not-null TEXT Columns that should be created as NOT NULL
|
|
--default <TEXT TEXT>... Default value that should be set for a column
|
|
--type <TEXT CHOICE>... Column types to use when creating the table
|
|
--no-detect-types Treat all CSV/TSV columns as TEXT
|
|
--analyze Run ANALYZE at the end of this operation
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
--silent Do not show progress bar
|
|
--strict Apply STRICT mode to created table
|
|
--ignore Ignore records if pk already exists
|
|
--replace Replace records if pk already exists
|
|
--truncate Truncate table before inserting records, if table
|
|
already exists
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_upsert:
|
|
|
|
upsert
|
|
======
|
|
|
|
See :ref:`cli_upsert`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils upsert [OPTIONS] PATH TABLE [FILE]
|
|
|
|
Upsert records based on their primary key. Works like 'insert' but if an
|
|
incoming record has a primary key that matches an existing record the existing
|
|
record will be updated.
|
|
|
|
If the table already exists and has a primary key, --pk can be omitted.
|
|
|
|
Use --type column-name type to override the type automatically chosen when the
|
|
table is created.
|
|
|
|
Example:
|
|
|
|
echo '[
|
|
{"id": 1, "name": "Lila"},
|
|
{"id": 2, "name": "Suna"}
|
|
]' | sqlite-utils upsert data.db chickens - --pk id
|
|
|
|
Options:
|
|
--pk TEXT Columns to use as the primary key, e.g. id
|
|
--code TEXT Python code defining a rows() function or iterable
|
|
of rows to insert
|
|
--flatten Flatten nested JSON objects, so {"a": {"b": 1}}
|
|
becomes {"a_b": 1}
|
|
--nl Expect newline-delimited JSON
|
|
-c, --csv Expect CSV input
|
|
--tsv Expect TSV input
|
|
--empty-null Treat empty strings as NULL
|
|
--lines Treat each line as a single value called 'line'
|
|
--text Treat input as a single value called 'text'
|
|
--convert TEXT Python code to convert each item
|
|
--import TEXT Python modules to import
|
|
--delimiter TEXT Delimiter to use for CSV files
|
|
--quotechar TEXT Quote character to use for CSV/TSV
|
|
--sniff Detect delimiter and quote character
|
|
--no-headers CSV file has no header row
|
|
--encoding TEXT Character encoding for input, defaults to utf-8
|
|
--batch-size INTEGER Commit every X records
|
|
--stop-after INTEGER Stop after X records
|
|
--alter Alter existing table to add any missing columns
|
|
--not-null TEXT Columns that should be created as NOT NULL
|
|
--default <TEXT TEXT>... Default value that should be set for a column
|
|
--type <TEXT CHOICE>... Column types to use when creating the table
|
|
--no-detect-types Treat all CSV/TSV columns as TEXT
|
|
--analyze Run ANALYZE at the end of this operation
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
--silent Do not show progress bar
|
|
--strict Apply STRICT mode to created table
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_bulk:
|
|
|
|
bulk
|
|
====
|
|
|
|
See :ref:`cli_bulk`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils bulk [OPTIONS] PATH SQL FILE
|
|
|
|
Execute parameterized SQL against the provided list of documents.
|
|
|
|
Example:
|
|
|
|
echo '[
|
|
{"id": 1, "name": "Lila2"},
|
|
{"id": 2, "name": "Suna2"}
|
|
]' | sqlite-utils bulk data.db '
|
|
update chickens set name = :name where id = :id
|
|
' -
|
|
|
|
Options:
|
|
--batch-size INTEGER Commit every X records
|
|
--functions TEXT Python code or a file path defining custom SQL
|
|
functions; can be used multiple times
|
|
--flatten Flatten nested JSON objects, so {"a": {"b": 1}} becomes
|
|
{"a_b": 1}
|
|
--nl Expect newline-delimited JSON
|
|
-c, --csv Expect CSV input
|
|
--tsv Expect TSV input
|
|
--empty-null Treat empty strings as NULL
|
|
--lines Treat each line as a single value called 'line'
|
|
--text Treat input as a single value called 'text'
|
|
--convert TEXT Python code to convert each item
|
|
--import TEXT Python modules to import
|
|
--delimiter TEXT Delimiter to use for CSV files
|
|
--quotechar TEXT Quote character to use for CSV/TSV
|
|
--sniff Detect delimiter and quote character
|
|
--no-headers CSV file has no header row
|
|
--encoding TEXT Character encoding for input, defaults to utf-8
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_search:
|
|
|
|
search
|
|
======
|
|
|
|
See :ref:`cli_search`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils search [OPTIONS] PATH DBTABLE Q
|
|
|
|
Execute a full-text search against this table
|
|
|
|
Example:
|
|
|
|
sqlite-utils search data.db chickens lila
|
|
|
|
Options:
|
|
-o, --order TEXT Order by ('column' or 'column desc')
|
|
-c, --column TEXT Columns to return
|
|
--limit INTEGER Number of rows to return - defaults to everything
|
|
--sql Show SQL query that would be run
|
|
--quote Apply FTS quoting rules to search term
|
|
--nl Output newline-delimited JSON
|
|
--arrays Output rows as arrays instead of objects
|
|
--csv Output CSV
|
|
--tsv Output TSV
|
|
--no-headers Omit headers from CSV/TSV and table/--fmt output
|
|
-t, --table Output as a formatted table
|
|
--fmt TEXT Table format - one of asciidoc, colon_grid,
|
|
double_grid, double_outline, fancy_grid, fancy_outline,
|
|
github, grid, heavy_grid, heavy_outline, html, jira,
|
|
latex, latex_booktabs, latex_longtable, latex_raw,
|
|
mediawiki, mixed_grid, mixed_outline, moinmoin, orgtbl,
|
|
outline, pipe, plain, presto, pretty, psql,
|
|
rounded_grid, rounded_outline, rst, simple,
|
|
simple_grid, simple_outline, textile, tsv, unsafehtml,
|
|
youtrack
|
|
--json-cols Detect JSON cols and output them as JSON, not escaped
|
|
strings
|
|
--ascii Escape non-ASCII characters in JSON output as \uXXXX
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_transform:
|
|
|
|
transform
|
|
=========
|
|
|
|
See :ref:`cli_transform_table`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils transform [OPTIONS] PATH TABLE
|
|
|
|
Transform a table beyond the capabilities of ALTER TABLE
|
|
|
|
Example:
|
|
|
|
sqlite-utils transform mydb.db mytable \
|
|
--drop column1 \
|
|
--rename column2 column_renamed
|
|
|
|
Options:
|
|
--type <TEXT CHOICE>... Change column type to INTEGER, TEXT, FLOAT,
|
|
REAL, BLOB or ANY
|
|
--drop TEXT Drop this column
|
|
--rename <TEXT TEXT>... Rename this column to X
|
|
-o, --column-order TEXT Reorder columns
|
|
--not-null TEXT Set this column to NOT NULL
|
|
--not-null-false TEXT Remove NOT NULL from this column
|
|
--pk TEXT Make this column the primary key
|
|
--pk-none Remove primary key (convert to rowid table)
|
|
--default <TEXT TEXT>... Set default value for this column
|
|
--default-none TEXT Remove default from this column
|
|
--add-foreign-key <TEXT TEXT TEXT>...
|
|
Add a foreign key constraint from a column to
|
|
another table with another column
|
|
--drop-foreign-key TEXT Drop foreign key constraint for this column
|
|
--strict / --no-strict Enable or disable STRICT mode (default:
|
|
preserve current mode)
|
|
--sql Output SQL without executing it
|
|
--load-extension TEXT Path to SQLite extension, with optional
|
|
:entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_extract:
|
|
|
|
extract
|
|
=======
|
|
|
|
See :ref:`cli_extract`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils extract [OPTIONS] PATH TABLE COLUMNS...
|
|
|
|
Extract one or more columns into a separate table
|
|
|
|
Example:
|
|
|
|
sqlite-utils extract trees.db Street_Trees species
|
|
|
|
Options:
|
|
--table TEXT Name of the other table to extract columns to
|
|
--fk-column TEXT Name of the foreign key column to add to the table
|
|
--rename <TEXT TEXT>... Rename this column in extracted table
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_schema:
|
|
|
|
schema
|
|
======
|
|
|
|
See :ref:`cli_schema`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils schema [OPTIONS] PATH [TABLES]...
|
|
|
|
Show full schema for this database or for specified tables
|
|
|
|
Example:
|
|
|
|
sqlite-utils schema trees.db
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_insert_files:
|
|
|
|
insert-files
|
|
============
|
|
|
|
See :ref:`cli_insert_files`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils insert-files [OPTIONS] PATH TABLE FILE_OR_DIR...
|
|
|
|
Insert one or more files using BLOB columns in the specified table
|
|
|
|
Example:
|
|
|
|
sqlite-utils insert-files pics.db images *.gif \
|
|
-c name:name \
|
|
-c content:content \
|
|
-c content_hash:sha256 \
|
|
-c created:ctime_iso \
|
|
-c modified:mtime_iso \
|
|
-c size:size \
|
|
--pk name
|
|
|
|
Options:
|
|
-c, --column TEXT Column definitions for the table
|
|
--pk TEXT Column to use as primary key
|
|
--alter Alter table to add missing columns
|
|
--replace Replace files with matching primary key
|
|
--upsert Upsert files with matching primary key
|
|
--name TEXT File name to use
|
|
--text Store file content as TEXT, not BLOB
|
|
--encoding TEXT Character encoding for input, defaults to utf-8
|
|
-s, --silent Don't show a progress bar
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_analyze_tables:
|
|
|
|
analyze-tables
|
|
==============
|
|
|
|
See :ref:`cli_analyze_tables`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils analyze-tables [OPTIONS] PATH [TABLES]...
|
|
|
|
Analyze the columns in one or more tables
|
|
|
|
Example:
|
|
|
|
sqlite-utils analyze-tables data.db trees
|
|
|
|
Options:
|
|
-c, --column TEXT Specific columns to analyze
|
|
--save Save results to _analyze_tables table
|
|
--common-limit INTEGER How many common values
|
|
--no-most Skip most common values
|
|
--no-least Skip least common values
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_convert:
|
|
|
|
convert
|
|
=======
|
|
|
|
See :ref:`cli_convert`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils convert [OPTIONS] DB_PATH TABLE COLUMNS... CODE
|
|
|
|
Convert columns using Python code you supply. For example:
|
|
|
|
sqlite-utils convert my.db mytable mycolumn \
|
|
'"\n".join(textwrap.wrap(value, 10))' \
|
|
--import=textwrap
|
|
|
|
"value" is a variable with the column value to be converted.
|
|
|
|
CODE can also be a reference to a callable that takes the value, for example:
|
|
|
|
sqlite-utils convert my.db mytable date r.parsedate
|
|
sqlite-utils convert my.db mytable data json.loads --import json
|
|
|
|
Use "-" for CODE to read Python code from standard input.
|
|
|
|
The following common operations are available as recipe functions:
|
|
|
|
r.jsonsplit(value: 'str', delimiter: 'str' = ',', type: 'Callable[[str],
|
|
object]' = <class 'str'>) -> 'str'
|
|
|
|
Convert a string like a,b,c into a JSON array ["a", "b", "c"]
|
|
|
|
r.parsedate(value: 'str', dayfirst: 'bool' = False, yearfirst: 'bool' = False,
|
|
errors: 'object | None' = None) -> 'str | None'
|
|
|
|
Parse a date and convert it to ISO date format: yyyy-mm-dd
|
|
- dayfirst=True: treat xx as the day in xx/yy/zz
|
|
- yearfirst=True: treat xx as the year in xx/yy/zz
|
|
- errors=r.IGNORE to ignore values that cannot be parsed
|
|
- errors=r.SET_NULL to set values that cannot be parsed to null
|
|
|
|
r.parsedatetime(value: 'str', dayfirst: 'bool' = False, yearfirst: 'bool' =
|
|
False, errors: 'object | None' = None) -> 'str | None'
|
|
|
|
Parse a datetime and convert it to ISO datetime format: yyyy-mm-ddTHH:MM:SS
|
|
- dayfirst=True: treat xx as the day in xx/yy/zz
|
|
- yearfirst=True: treat xx as the year in xx/yy/zz
|
|
- errors=r.IGNORE to ignore values that cannot be parsed
|
|
- errors=r.SET_NULL to set values that cannot be parsed to null
|
|
|
|
You can use these recipes like so:
|
|
|
|
sqlite-utils convert my.db mytable mycolumn \
|
|
'r.jsonsplit(value, delimiter=":")'
|
|
|
|
Options:
|
|
--import TEXT Python modules to import
|
|
--dry-run Show results of running this against first 10
|
|
rows
|
|
--multi Populate columns for keys in returned
|
|
dictionary
|
|
--where TEXT Optional where clause
|
|
-p, --param <TEXT TEXT>... Named :parameters for where clause
|
|
--output TEXT Optional separate column to populate with the
|
|
output
|
|
--output-type [integer|float|blob|text]
|
|
Column type to use for the output column
|
|
--drop Drop original column afterwards
|
|
-s, --silent Don't show a progress bar
|
|
--pdb Open pdb debugger on first error
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_tables:
|
|
|
|
tables
|
|
======
|
|
|
|
See :ref:`cli_tables`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils tables [OPTIONS] PATH [NAMES]...
|
|
|
|
List the tables in the database
|
|
|
|
Example:
|
|
|
|
sqlite-utils tables trees.db
|
|
|
|
Pass one or more table names to restrict the output to just those tables:
|
|
|
|
sqlite-utils tables trees.db plants seeds
|
|
|
|
Options:
|
|
--fts4 Just show FTS4 enabled tables
|
|
--fts5 Just show FTS5 enabled tables
|
|
--counts Include row counts per table
|
|
--nl Output newline-delimited JSON
|
|
--arrays Output rows as arrays instead of objects
|
|
--csv Output CSV
|
|
--tsv Output TSV
|
|
--no-headers Omit headers from CSV/TSV and table/--fmt output
|
|
-t, --table Output as a formatted table
|
|
--fmt TEXT Table format - one of asciidoc, colon_grid,
|
|
double_grid, double_outline, fancy_grid, fancy_outline,
|
|
github, grid, heavy_grid, heavy_outline, html, jira,
|
|
latex, latex_booktabs, latex_longtable, latex_raw,
|
|
mediawiki, mixed_grid, mixed_outline, moinmoin, orgtbl,
|
|
outline, pipe, plain, presto, pretty, psql,
|
|
rounded_grid, rounded_outline, rst, simple,
|
|
simple_grid, simple_outline, textile, tsv, unsafehtml,
|
|
youtrack
|
|
--json-cols Detect JSON cols and output them as JSON, not escaped
|
|
strings
|
|
--ascii Escape non-ASCII characters in JSON output as \uXXXX
|
|
--columns Include list of columns for each table
|
|
--schema Include schema for each table
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_views:
|
|
|
|
views
|
|
=====
|
|
|
|
See :ref:`cli_views`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils views [OPTIONS] PATH [NAMES]...
|
|
|
|
List the views in the database
|
|
|
|
Example:
|
|
|
|
sqlite-utils views trees.db
|
|
|
|
Pass one or more view names to restrict the output to just those views:
|
|
|
|
sqlite-utils views trees.db recent_plants
|
|
|
|
Options:
|
|
--counts Include row counts per view
|
|
--nl Output newline-delimited JSON
|
|
--arrays Output rows as arrays instead of objects
|
|
--csv Output CSV
|
|
--tsv Output TSV
|
|
--no-headers Omit headers from CSV/TSV and table/--fmt output
|
|
-t, --table Output as a formatted table
|
|
--fmt TEXT Table format - one of asciidoc, colon_grid,
|
|
double_grid, double_outline, fancy_grid, fancy_outline,
|
|
github, grid, heavy_grid, heavy_outline, html, jira,
|
|
latex, latex_booktabs, latex_longtable, latex_raw,
|
|
mediawiki, mixed_grid, mixed_outline, moinmoin, orgtbl,
|
|
outline, pipe, plain, presto, pretty, psql,
|
|
rounded_grid, rounded_outline, rst, simple,
|
|
simple_grid, simple_outline, textile, tsv, unsafehtml,
|
|
youtrack
|
|
--json-cols Detect JSON cols and output them as JSON, not escaped
|
|
strings
|
|
--ascii Escape non-ASCII characters in JSON output as \uXXXX
|
|
--columns Include list of columns for each view
|
|
--schema Include schema for each view
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_rows:
|
|
|
|
rows
|
|
====
|
|
|
|
See :ref:`cli_rows`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils rows [OPTIONS] PATH DBTABLE
|
|
|
|
Output all rows in the specified table
|
|
|
|
Example:
|
|
|
|
sqlite-utils rows trees.db Trees
|
|
|
|
Options:
|
|
-c, --column TEXT Columns to return
|
|
--where TEXT Optional where clause
|
|
-o, --order TEXT Order by ('column' or 'column desc')
|
|
-p, --param <TEXT TEXT>... Named :parameters for where clause
|
|
--limit INTEGER Number of rows to return - defaults to everything
|
|
--offset INTEGER SQL offset to use
|
|
--nl Output newline-delimited JSON
|
|
--arrays Output rows as arrays instead of objects
|
|
--csv Output CSV
|
|
--tsv Output TSV
|
|
--no-headers Omit headers from CSV/TSV and table/--fmt output
|
|
-t, --table Output as a formatted table
|
|
--fmt TEXT Table format - one of asciidoc, colon_grid,
|
|
double_grid, double_outline, fancy_grid,
|
|
fancy_outline, github, grid, heavy_grid,
|
|
heavy_outline, html, jira, latex, latex_booktabs,
|
|
latex_longtable, latex_raw, mediawiki, mixed_grid,
|
|
mixed_outline, moinmoin, orgtbl, outline, pipe,
|
|
plain, presto, pretty, psql, rounded_grid,
|
|
rounded_outline, rst, simple, simple_grid,
|
|
simple_outline, textile, tsv, unsafehtml, youtrack
|
|
--json-cols Detect JSON cols and output them as JSON, not
|
|
escaped strings
|
|
--ascii Escape non-ASCII characters in JSON output as
|
|
\uXXXX
|
|
--load-extension TEXT Path to SQLite extension, with optional
|
|
:entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_triggers:
|
|
|
|
triggers
|
|
========
|
|
|
|
See :ref:`cli_triggers`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils triggers [OPTIONS] PATH [TABLES]...
|
|
|
|
Show triggers configured in this database
|
|
|
|
Example:
|
|
|
|
sqlite-utils triggers trees.db
|
|
|
|
Options:
|
|
--nl Output newline-delimited JSON
|
|
--arrays Output rows as arrays instead of objects
|
|
--csv Output CSV
|
|
--tsv Output TSV
|
|
--no-headers Omit headers from CSV/TSV and table/--fmt output
|
|
-t, --table Output as a formatted table
|
|
--fmt TEXT Table format - one of asciidoc, colon_grid,
|
|
double_grid, double_outline, fancy_grid, fancy_outline,
|
|
github, grid, heavy_grid, heavy_outline, html, jira,
|
|
latex, latex_booktabs, latex_longtable, latex_raw,
|
|
mediawiki, mixed_grid, mixed_outline, moinmoin, orgtbl,
|
|
outline, pipe, plain, presto, pretty, psql,
|
|
rounded_grid, rounded_outline, rst, simple,
|
|
simple_grid, simple_outline, textile, tsv, unsafehtml,
|
|
youtrack
|
|
--json-cols Detect JSON cols and output them as JSON, not escaped
|
|
strings
|
|
--ascii Escape non-ASCII characters in JSON output as \uXXXX
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_indexes:
|
|
|
|
indexes
|
|
=======
|
|
|
|
See :ref:`cli_indexes`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils indexes [OPTIONS] PATH [TABLES]...
|
|
|
|
Show indexes for the whole database or specific tables
|
|
|
|
Example:
|
|
|
|
sqlite-utils indexes trees.db Trees
|
|
|
|
Options:
|
|
--aux Include auxiliary columns
|
|
--nl Output newline-delimited JSON
|
|
--arrays Output rows as arrays instead of objects
|
|
--csv Output CSV
|
|
--tsv Output TSV
|
|
--no-headers Omit headers from CSV/TSV and table/--fmt output
|
|
-t, --table Output as a formatted table
|
|
--fmt TEXT Table format - one of asciidoc, colon_grid,
|
|
double_grid, double_outline, fancy_grid, fancy_outline,
|
|
github, grid, heavy_grid, heavy_outline, html, jira,
|
|
latex, latex_booktabs, latex_longtable, latex_raw,
|
|
mediawiki, mixed_grid, mixed_outline, moinmoin, orgtbl,
|
|
outline, pipe, plain, presto, pretty, psql,
|
|
rounded_grid, rounded_outline, rst, simple,
|
|
simple_grid, simple_outline, textile, tsv, unsafehtml,
|
|
youtrack
|
|
--json-cols Detect JSON cols and output them as JSON, not escaped
|
|
strings
|
|
--ascii Escape non-ASCII characters in JSON output as \uXXXX
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_create_database:
|
|
|
|
create-database
|
|
===============
|
|
|
|
See :ref:`cli_create_database`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils create-database [OPTIONS] PATH
|
|
|
|
Create a new empty database file
|
|
|
|
Example:
|
|
|
|
sqlite-utils create-database trees.db
|
|
|
|
Options:
|
|
--enable-wal Enable WAL mode on the created database
|
|
--init-spatialite Enable SpatiaLite on the created database
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_create_table:
|
|
|
|
create-table
|
|
============
|
|
|
|
See :ref:`cli_create_table`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils create-table [OPTIONS] PATH TABLE COLUMNS...
|
|
|
|
Add a table with the specified columns. Columns should be specified using
|
|
name, type pairs, for example:
|
|
|
|
sqlite-utils create-table my.db people \
|
|
id integer \
|
|
name text \
|
|
height real \
|
|
photo blob --pk id
|
|
|
|
Valid column types are text, integer, real, float, blob and any.
|
|
|
|
Options:
|
|
--pk TEXT Column to use as primary key
|
|
--not-null TEXT Columns that should be created as NOT NULL
|
|
--default <TEXT TEXT>... Default value that should be set for a column
|
|
--fk <TEXT TEXT TEXT>... Column, other table, other column to set as a
|
|
foreign key
|
|
--ignore If table already exists, do nothing
|
|
--replace If table already exists, replace it
|
|
--transform If table already exists, try to transform the schema
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
--strict Apply STRICT mode to created table
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_create_index:
|
|
|
|
create-index
|
|
============
|
|
|
|
See :ref:`cli_create_index`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils create-index [OPTIONS] PATH TABLE COLUMN...
|
|
|
|
Add an index to the specified table for the specified columns
|
|
|
|
Example:
|
|
|
|
sqlite-utils create-index chickens.db chickens name
|
|
|
|
To create an index in descending order:
|
|
|
|
sqlite-utils create-index chickens.db chickens -- -name
|
|
|
|
Options:
|
|
--name TEXT Explicit name for the new index
|
|
--unique Make this a unique index
|
|
--if-not-exists, --ignore Ignore if index already exists
|
|
--analyze Run ANALYZE after creating the index
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_drop_index:
|
|
|
|
drop-index
|
|
==========
|
|
|
|
See :ref:`cli_drop_index`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils drop-index [OPTIONS] PATH TABLE INDEX
|
|
|
|
Drop an index by index name from the specified table
|
|
|
|
Example:
|
|
|
|
sqlite-utils drop-index chickens.db chickens idx_chickens_name
|
|
|
|
Options:
|
|
--ignore Ignore if index does not exist
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_migrate:
|
|
|
|
migrate
|
|
=======
|
|
|
|
See :ref:`cli_migrate`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils migrate [OPTIONS] DB_PATH [MIGRATIONS]...
|
|
|
|
Apply pending database migrations.
|
|
|
|
Usage:
|
|
|
|
sqlite-utils migrate database.db
|
|
|
|
This will find the migrations.py file in the current directory or
|
|
subdirectories and apply any pending migrations.
|
|
|
|
Or pass paths to one or more migrations.py files directly:
|
|
|
|
sqlite-utils migrate database.db path/to/migrations.py
|
|
|
|
Pass --list to see a list of applied and pending migrations without applying
|
|
them.
|
|
|
|
Use --stop-before migration_set:name to stop before a migration. This option
|
|
can be used multiple times.
|
|
|
|
Options:
|
|
--stop-before TEXT Stop before applying this migration. Use set:name to
|
|
target a migration set.
|
|
--list List migrations without running them
|
|
-v, --verbose Show verbose output
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_enable_fts:
|
|
|
|
enable-fts
|
|
==========
|
|
|
|
See :ref:`cli_fts`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils enable-fts [OPTIONS] PATH TABLE COLUMN...
|
|
|
|
Enable full-text search for specific table and columns
|
|
|
|
Example:
|
|
|
|
sqlite-utils enable-fts chickens.db chickens name
|
|
|
|
Options:
|
|
--fts4 Use FTS4
|
|
--fts5 Use FTS5
|
|
--tokenize TEXT Tokenizer to use, e.g. porter
|
|
--create-triggers Create triggers to update the FTS tables when the
|
|
parent table changes.
|
|
--replace Replace existing FTS configuration if it exists
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_populate_fts:
|
|
|
|
populate-fts
|
|
============
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils populate-fts [OPTIONS] PATH TABLE COLUMN...
|
|
|
|
Re-populate full-text search for specific table and columns
|
|
|
|
Example:
|
|
|
|
sqlite-utils populate-fts chickens.db chickens name
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_rebuild_fts:
|
|
|
|
rebuild-fts
|
|
===========
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils rebuild-fts [OPTIONS] PATH [TABLES]...
|
|
|
|
Rebuild all or specific full-text search tables
|
|
|
|
Example:
|
|
|
|
sqlite-utils rebuild-fts chickens.db chickens
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_disable_fts:
|
|
|
|
disable-fts
|
|
===========
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils disable-fts [OPTIONS] PATH TABLE
|
|
|
|
Disable full-text search for specific table
|
|
|
|
Example:
|
|
|
|
sqlite-utils disable-fts chickens.db chickens
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_optimize:
|
|
|
|
optimize
|
|
========
|
|
|
|
See :ref:`cli_optimize`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils optimize [OPTIONS] PATH [TABLES]...
|
|
|
|
Optimize all full-text search tables and then run VACUUM - should shrink the
|
|
database file
|
|
|
|
Example:
|
|
|
|
sqlite-utils optimize chickens.db
|
|
|
|
Options:
|
|
--no-vacuum Don't run VACUUM
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_analyze:
|
|
|
|
analyze
|
|
=======
|
|
|
|
See :ref:`cli_analyze`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils analyze [OPTIONS] PATH [NAMES]...
|
|
|
|
Run ANALYZE against the whole database, or against specific named indexes and
|
|
tables
|
|
|
|
Example:
|
|
|
|
sqlite-utils analyze chickens.db
|
|
|
|
Options:
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_vacuum:
|
|
|
|
vacuum
|
|
======
|
|
|
|
See :ref:`cli_vacuum`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils vacuum [OPTIONS] PATH
|
|
|
|
Run VACUUM against the database
|
|
|
|
Example:
|
|
|
|
sqlite-utils vacuum chickens.db
|
|
|
|
Options:
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_dump:
|
|
|
|
dump
|
|
====
|
|
|
|
See :ref:`cli_dump`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils dump [OPTIONS] PATH
|
|
|
|
Output a SQL dump of the schema and full contents of the database
|
|
|
|
Example:
|
|
|
|
sqlite-utils dump chickens.db
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_add_column:
|
|
|
|
add-column
|
|
==========
|
|
|
|
See :ref:`cli_add_column`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils add-column [OPTIONS] PATH TABLE COL_NAME
|
|
[integer|int|float|real|text|str|blob|bytes|any]
|
|
|
|
Add a column to the specified table
|
|
|
|
Example:
|
|
|
|
sqlite-utils add-column chickens.db chickens weight float
|
|
|
|
Options:
|
|
--fk TEXT Table to reference as a foreign key
|
|
--fk-col TEXT Referenced column on that foreign key table - if
|
|
omitted will automatically use the primary key
|
|
--not-null-default TEXT Add NOT NULL DEFAULT 'TEXT' constraint
|
|
--ignore If column already exists, do nothing
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_add_foreign_key:
|
|
|
|
add-foreign-key
|
|
===============
|
|
|
|
See :ref:`cli_add_foreign_key`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils add-foreign-key [OPTIONS] PATH TABLE COLUMN [OTHER_TABLE]
|
|
[OTHER_COLUMN]
|
|
|
|
Add a new foreign key constraint to an existing table
|
|
|
|
Example:
|
|
|
|
sqlite-utils add-foreign-key my.db books author_id authors id
|
|
|
|
Options:
|
|
--ignore If foreign key already exists, do nothing
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_add_foreign_keys:
|
|
|
|
add-foreign-keys
|
|
================
|
|
|
|
See :ref:`cli_add_foreign_keys`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils add-foreign-keys [OPTIONS] PATH [FOREIGN_KEY]...
|
|
|
|
Add multiple new foreign key constraints to a database
|
|
|
|
Example:
|
|
|
|
sqlite-utils add-foreign-keys my.db \
|
|
books author_id authors id \
|
|
authors country_id countries id
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_index_foreign_keys:
|
|
|
|
index-foreign-keys
|
|
==================
|
|
|
|
See :ref:`cli_index_foreign_keys`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils index-foreign-keys [OPTIONS] PATH
|
|
|
|
Ensure every foreign key column has an index on it
|
|
|
|
Example:
|
|
|
|
sqlite-utils index-foreign-keys chickens.db
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_enable_wal:
|
|
|
|
enable-wal
|
|
==========
|
|
|
|
See :ref:`cli_wal`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils enable-wal [OPTIONS] PATH...
|
|
|
|
Enable WAL for database files
|
|
|
|
Example:
|
|
|
|
sqlite-utils enable-wal chickens.db
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_disable_wal:
|
|
|
|
disable-wal
|
|
===========
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils disable-wal [OPTIONS] PATH...
|
|
|
|
Disable WAL for database files
|
|
|
|
Example:
|
|
|
|
sqlite-utils disable-wal chickens.db
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_enable_counts:
|
|
|
|
enable-counts
|
|
=============
|
|
|
|
See :ref:`cli_enable_counts`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils enable-counts [OPTIONS] PATH [TABLES]...
|
|
|
|
Configure triggers to update a _counts table with row counts
|
|
|
|
Example:
|
|
|
|
sqlite-utils enable-counts chickens.db
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_reset_counts:
|
|
|
|
reset-counts
|
|
============
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils reset-counts [OPTIONS] PATH
|
|
|
|
Reset calculated counts in the _counts table
|
|
|
|
Example:
|
|
|
|
sqlite-utils reset-counts chickens.db
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_duplicate:
|
|
|
|
duplicate
|
|
=========
|
|
|
|
See :ref:`cli_duplicate_table`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils duplicate [OPTIONS] PATH TABLE NEW_TABLE
|
|
|
|
Create a duplicate of this table, copying across the schema and all row data.
|
|
|
|
Options:
|
|
--ignore If table does not exist, do nothing
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_rename_table:
|
|
|
|
rename-table
|
|
============
|
|
|
|
See :ref:`cli_renaming_tables`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils rename-table [OPTIONS] PATH TABLE NEW_NAME
|
|
|
|
Rename this table.
|
|
|
|
Options:
|
|
--ignore If table does not exist, do nothing
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_drop_table:
|
|
|
|
drop-table
|
|
==========
|
|
|
|
See :ref:`cli_drop_table`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils drop-table [OPTIONS] PATH TABLE
|
|
|
|
Drop the specified table
|
|
|
|
Example:
|
|
|
|
sqlite-utils drop-table chickens.db chickens
|
|
|
|
Options:
|
|
--ignore If table does not exist, do nothing
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_create_view:
|
|
|
|
create-view
|
|
===========
|
|
|
|
See :ref:`cli_create_view`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils create-view [OPTIONS] PATH VIEW SELECT
|
|
|
|
Create a view for the provided SELECT query
|
|
|
|
Example:
|
|
|
|
sqlite-utils create-view chickens.db heavy_chickens \
|
|
'select * from chickens where weight > 3'
|
|
|
|
Options:
|
|
--ignore If view already exists, do nothing
|
|
--replace If view already exists, replace it
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_drop_view:
|
|
|
|
drop-view
|
|
=========
|
|
|
|
See :ref:`cli_drop_view`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils drop-view [OPTIONS] PATH VIEW
|
|
|
|
Drop the specified view
|
|
|
|
Example:
|
|
|
|
sqlite-utils drop-view chickens.db heavy_chickens
|
|
|
|
Options:
|
|
--ignore If view does not exist, do nothing
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_install:
|
|
|
|
install
|
|
=======
|
|
|
|
See :ref:`cli_install`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils install [OPTIONS] [PACKAGES]...
|
|
|
|
Install packages from PyPI into the same environment as sqlite-utils
|
|
|
|
Options:
|
|
-U, --upgrade Upgrade packages to latest version
|
|
-e, --editable TEXT Install a project in editable mode from this path
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_uninstall:
|
|
|
|
uninstall
|
|
=========
|
|
|
|
See :ref:`cli_uninstall`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils uninstall [OPTIONS] PACKAGES...
|
|
|
|
Uninstall Python packages from the sqlite-utils environment
|
|
|
|
Options:
|
|
-y, --yes Don't ask for confirmation
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_add_geometry_column:
|
|
|
|
add-geometry-column
|
|
===================
|
|
|
|
See :ref:`cli_spatialite`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils add-geometry-column [OPTIONS] DB_PATH TABLE COLUMN_NAME
|
|
|
|
Add a SpatiaLite geometry column to an existing table. Requires SpatiaLite
|
|
extension.
|
|
|
|
By default, this command will try to load the SpatiaLite extension from usual
|
|
paths. To load it from a specific path, use --load-extension.
|
|
|
|
Options:
|
|
-t, --type [point|linestring|polygon|multipoint|multilinestring|multipolygon|geometrycollection|geometry]
|
|
Specify a geometry type for this column.
|
|
[default: GEOMETRY]
|
|
--srid INTEGER Spatial Reference ID. See
|
|
https://spatialreference.org for details on
|
|
specific projections. [default: 4326]
|
|
--dimensions TEXT Coordinate dimensions. Use XYZ for three-
|
|
dimensional geometries.
|
|
--not-null Add a NOT NULL constraint.
|
|
--load-extension TEXT Path to SQLite extension, with optional
|
|
:entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_create_spatial_index:
|
|
|
|
create-spatial-index
|
|
====================
|
|
|
|
See :ref:`cli_spatialite_indexes`.
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils create-spatial-index [OPTIONS] DB_PATH TABLE COLUMN_NAME
|
|
|
|
Create a spatial index on a SpatiaLite geometry column. The table and geometry
|
|
column must already exist before trying to add a spatial index.
|
|
|
|
By default, this command will try to load the SpatiaLite extension from usual
|
|
paths. To load it from a specific path, use --load-extension.
|
|
|
|
Options:
|
|
--load-extension TEXT Path to SQLite extension, with optional :entrypoint
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. _cli_ref_plugins:
|
|
|
|
plugins
|
|
=======
|
|
|
|
::
|
|
|
|
Usage: sqlite-utils plugins [OPTIONS]
|
|
|
|
List installed plugins
|
|
|
|
Options:
|
|
-h, --help Show this message and exit.
|
|
|
|
|
|
.. [[[end]]]
|