「filesql」を入れたら、CSVの集計にDBサーバーが要らなくなった

filesql
CSV・JSON・Excel などのファイルを SQLite に読み込み、SQL で問い合わせる Go ライブラリ
GitHub
公開
正式公開 2025-08-23
作り手
CHIKAMATSU Naohiro(nao1215)(個人)
対応
Go ライブラリ・Linux・Mac・Windows
言語
英語
価格
無料(MIT ライセンス)
評価
GitHub のスター 383(2026-10-14)

どんなアプリか

filesql は、手元のファイルをメモリ上の SQLite データベースに読み込み、通常の SQLite の構文で問い合わせられる Go のライブラリです。読み込める形式は CSV、TSV、LTSV、JSON、JSONL、Parquet、XLSX、ACH、Fedwire です。テーブル名はファイル名から付き、users.csv は users というテーブルになります。

複数のファイルを開けば、形式の違うファイルどうしを結合できます。問い合わせは SQLite の構文が基本ですが、WithDialect を使うと MySQL、PostgreSQL、GoogleSQL の構文で書き、SQLite に翻訳して実行できます。CSV や JSON、Parquet、XLSX などは圧縮されたままでも読み込めます。

同じモジュールには、表にする前の行を整えて検証する prep パッケージが入っています。前後の空白の除去、大文字・小文字の統一、既定値の設定、行番号つきの検証エラーに対応します。同じ作者のシェル sqly は、filesql と同じ中核の上に作られています。

filesql is for cases where the data is already in a file and the fastest useful tool is SQL.

nao1215 さん、GitHub の README「Why filesql?」

README では、cgo なしで database/sql からファイルのデータを扱いたい Go のプログラム向けだと説明しています。編集した内容を元のファイルへ書き戻せること、CSV・TSV・LTSV を Shift-JIS や EUC-JP でも書き出せることも挙げられています。

料金とデータの置き場所

MIT ライセンスで公開されています。読み込んだデータはメモリ上の SQLite データベースに置かれ、編集した内容は保存すると決めるまでメモリの中にとどまります。保存には DumpDatabase、EnableAutoSave、EnableAutoSaveOnCommit を使います。新しいデータベースを作る代わりに、自分で管理している *sql.DB に読み込むこともできます。

同じ分野のアプリ

名前型仕掛け対応料金
filesqlGo ライブラリCSV・JSON・Parquet・Excel などをメモリ上の SQLite に読み込み、SQL で問い合わせるGo ライブラリ(Linux・macOS・Windows)無料(OSS, MIT)
sqluvCLIRDBMS と、ローカル・HTTPS・S3 上の CSV/TSV/LTSV をターミナルの画面から SQL で扱うCLI(Go)無料(OSS, MIT)
ExStruct(exstruct)Python ライブラリExcel ブックを図形・グラフ・結合セルまで含めて JSON / YAML / TOON に構造化するPython ライブラリ / MCP サーバー無料(OSS, BSD-3-Clause)

入れる前に

動かすには Go 1.26.9 以降が必要で、Linux、macOS、Windows に対応しています。README には、これより前の 1.26 には対応しないと書かれています。

メモリに収まらない大きさのデータの分析や、S3 上のファイルの分析には、README 自身が DuckDB を勧めています。

他の SQL 方言からの翻訳は、完全な再現ではなく README で示された一部の構文を対象としています。その範囲を外れる問い合わせは、該当する構文の行と列を示して断られます。また、SQLite 以外の方言は自動保存と組み合わせられません。