sqlite-utils について
sqlite-utils は SQLite データベース管理のためのコマンドラインインターフェースを提供します。JSON、CSV などの形式からのデータ直接インポート、クエリ実行、データベース構造の検査をサポートします。
主な機能
- 01JSON やその他の形式から SQLite テーブルへデータを挿入
- 02データベーステーブル、列、およびそれらのプロパティをクエリおよび検査
- 03Python スクリプトまたはシェルコマンドを使用してデータ操作を組み合わせる
活用シーン
- 01コーディングワークフローで構造化データセットを処理・変換
- 02自動化パイプラインで分析用データベースを迅速に構築
- 03複数のソースからデータを 1 つのデータベースに統合
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にsqlite-utils --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
sqlite-utils
SQLite データベースを操作するための Python CLI ユーティリティおよびライブラリです。
主な機能
- JSON をパイプで渡す(またはCSV や TSV)ことで、新しい SQLite データベースファイルに直接取り込み、適切なスキーマのテーブルを自動作成します
- メモリ内で SQL クエリを実行できます。結合を含むクエリを CSV、TSV、JSON ファイル内のデータに対して直接実行し、結果を表示できます
- データベースのテーブルに対してSQLite の全文検索を設定し、関連度順に検索クエリを実行できます
- テーブルを変換して、SQLite の
ALTER TABLEでは直接サポートされない、カラムの型の変更などのスキーマ変更を行えます - カラムを抽出して別のテーブルに移し、既存のデータをより適切に正規化できます
- Python のマイグレーションファイルと
sqlite-utils migrateコマンドを使用して、データベースのマイグレーションを管理できます - プラグインをインストールして、カスタム SQL 関数や追加機能を利用できます
sqlite-utils 3.x からのアップグレードですか?4.0 アップグレードガイドをご覧ください。
sqlite-utils の新機能に関する一連の記事や、sqlite-utils タグ付きの記事など、私のブログで詳しくご覧いただけます。
インストール
pip install sqlite-utils
macOS で Homebrew を使用している場合は、次のようにインストールできます。
brew install sqlite-utils
CLI ツールとして使用する
CLI ユーティリティを使って、次のような操作ができます。
$ sqlite-utils memory dogs.csv "select * from t"
[{"id": 1, "age": 4, "name": "Cleo"},
{"id": 2, "age": 2, "name": "Pancakes"}]
$ sqlite-utils insert dogs.db dogs dogs.csv --csv
[####################################] 100%
$ sqlite-utils tables dogs.db --counts
[{"table": "dogs", "count": 2}]
$ sqlite-utils dogs.db "select id, name from dogs"
[{"id": 1, "name": "Cleo"},
{"id": 2, "name": "Pancakes"}]
$ sqlite-utils dogs.db "select * from dogs" --csv
id,age,name
1,4,Cleo
2,2,Pancakes
$ sqlite-utils dogs.db "select * from dogs" --table
id age name
---- ----- --------
1 4 Cleo
2 2 Pancakes
次のようにして、JSON データを新しいデータベーステーブルにインポートできます。
$ curl https://api.github.com/repos/simonw/sqlite-utils/releases \
| sqlite-utils insert releases.db releases - --pk id
CSV ファイル内のデータの場合は、次のようにします。
$ sqlite-utils insert dogs.db dogs dogs.csv --csv
sqlite-utils memory を使うと、CSV または JSON データをインメモリデータベースにインポートし、1 つのコマンドで SQL クエリを実行できます。
$ cat dogs.csv | sqlite-utils memory - "select name, age from stdin"
さらに多くのコマンドについて詳しくは、CLI の完全なドキュメントをご覧ください。
ライブラリとして使用する
import sqlite_utils を使って、次のように Python ライブラリとして利用することもできます。
import sqlite_utils
db = sqlite_utils.Database("demo_database.db")
# This line creates a "dogs" table if one does not already exist:
db["dogs"].insert_all([
{"id": 1, "age": 4, "name": "Cleo"},
{"id": 2, "age": 2, "name": "Pancakes"}
], pk="id")
Python ライブラリでできるその他の操作については、ライブラリの完全なドキュメントをご覧ください。
関連プロジェクト
- Datasette:データの探索と公開のためのツール
- csvs-to-sqlite:CSV ファイルを SQLite データベースに変換します
- db-to-sqlite:MySQL または PostgreSQL データベースを SQLite ファイルとしてエクスポートする CLI ツール
- dogsheep:
sqlite-utilsを基盤とする、個人向け分析ツールのファミリー