「filesql」を入れたら、CSVの集計にDBサーバーが要らなくなった
- 公開
- 正式公開 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 に読み込むこともできます。
同じ分野のアプリ
| 名前 | 型 | 仕掛け | 対応 | 料金 |
|---|---|---|---|---|
| filesql | Go ライブラリ | CSV・JSON・Parquet・Excel などをメモリ上の SQLite に読み込み、SQL で問い合わせる | Go ライブラリ(Linux・macOS・Windows) | 無料(OSS, MIT) |
| sqluv | CLI | RDBMS と、ローカル・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 以外の方言は自動保存と組み合わせられません。