在 Mac 上用 SQL 查询 Beancount 账本
打开 .beancount,将交易、分录、余额和元数据作为 SQL 表查询,或向 rledger 发送 BQL。账本仍为文本文件,使用自己的编辑器修改。
适用于 Mac首次选择 Beancount 时下载驱动


概览
- 查询语言
- SQL
- 驱动
- 首次使用时下载
- 连接方式
- 文件
- iPhone 和 iPad
- 无法打开
打开账本
TablePro 运行 rledger 或 Python Beancount 读取账本。需要选择时请安装 rledger:两者并存时优先使用它,只有它能运行 BQL,并将验证输出填入 diagnostics 表。
在连接表单用 Browse… 选择文件。账本路径就是整个连接,无主机、端口、密码或数据库。.beancount 也可从 Finder 打开,并支持导入 beancount:///path/to/main.beancount URL。
从 Finder 打开的应用不继承 shell 的 PATH。若后端在 Terminal 可运行但在此不可用,请用 launchctl setenv TABLEPRO_RUSTLEDGER_BINARY 或 TABLEPRO_BEANCOUNT_PYTHON 指定并重启。
Python 后端运行 Beancount 附带插件,其他 plugin 指令属于第三方代码,在连接中启用 Run Ledger Plugins 前会跳过。跳过的插件列在 diagnostics。
查询账本
表涵盖交易和分录、账户、余额及余额断言、价格和商品、所有其他指令、元数据、标签、链接及源文件。分录通过 transaction_id 连接交易,账户按名称连接。
金额已完成记账、算术、成本和价格解析,分录成本和行内价格有独立列。交易、分录及若干指令表含 source_location,例如 main.beancount:42,可从记录追溯源文件行。
查询前加 BQL: 将其发送给 rledger 而非表。BQL 结果支持浏览、行数和分页,不支持 SQL 参数。
include 支持具体路径和 glob,所有账本文件及引用文档均被监控。在编辑器保存后,下次查询无需重连即可读取。连接始终处于 安全模式 Read-Only,拒绝 INSERT、UPDATE、DELETE 和结构修改。
移动数据
表或查询结果可导出为 CSV、JSON、SQL、XLSX、Markdown、HTML和XML。TablePro 可作为数据库打开的其他文件包括 SQLite、DuckDB 和 Parquet。
iPhone 和 iPad
iPhone 和 iPad 应用没有 Beancount 驱动。从 Mac 同步的 Beancount 连接会显示在列表中,但无法打开。
限制
- TablePro 打开账本时,将其读取到 23 张只读 SQL 表中,不会写回账本。
- 需要在此 Mac 安装 rledger 或 Python beancount。
关于 Beancount 的问题
有错误的账本还能打开吗?
通过 rledger 可以。验证失败时仍映射账本,每个问题作为 diagnostics 中的一行,含文件、行号、严重程度和消息。
一个连接能打开多个账本吗?
一个连接对应一个账本文件,无法切换。主文件若 include 其他文件,会全部加载,也支持 glob。
获取 TablePro
需要 macOS 13 Ventura 或更新版本