2.4. 存储财务数据

2.4.1. 概述

GnuCash提供了几种格式存储财务数据。默认的文件存储格式是XML,而SQL存储在SQLite、MySQL和PostgreSQL格式中可用。对于新文件,用户可以通过文件保存对话框选择文件格式,对于存在的文件,可以通过文件另存为…对话框选择文件格式。

XML存储格式是一种默认压缩存储的文本文件,是否压缩可以通过编辑首选项+常规+压缩文件设置。也可以使用SQLite存储,会像XML格式一样,将你的数据存储为系统中的单个文件。然而,在程序内部,一个SQLite文件会作为数据库进行管理。MySQL和PostgreSQL存储选项需要连接到数据库服务器,并在你的计算机上安装额外的数据库驱动程序。

提示

用户可以随时使用文件另存为…更改存储格式,并以选定的格式创建数据文件的副本。

2.4.2. 存储压缩及有关建议

每种存储格式各有优缺点,用户需要结合自身的需求和能力进行考虑。可参见下文的存储格式对比了解详细信息。

XML格式是最为稳定成熟的,因此建议大多数用户选择此格式。SQL格式于2.4版添加,在用户中成为了越发受欢迎的选择。SQLite格式让用户无需花功夫安装并管理完整的DBMS就可以享受SQL存储的优点。MySQL和PostgreSQL选项分别要求安装MySQL和PostgreSQL DBMS,这些DBMS最好由经验丰富的数据库管理员维护。

注意

GnuCashSQL存储后端的支持意味着GnuCash已经完全实现了DBMS特性,包括多用户和增量数据操作。然而,GnuCash当前并没有实现这些特性,不过这是开发组的长期目标。

2.4.3. 存储格式对比表

表 2.2. 存储格式对比

 XMLSQLiteMySQLPostgreSQL
可用性内置依赖于软件包 [a]
文件拓展名gnucashN/A [b]
额外软件MySQLPostgreSQL
额外技能数据库管理员
压缩gzip
文件保存在执行保存命令时在提交时
多用户支持不支持不支持不支持不支持

[a] SQL后端依赖额外的软件包。这些软件包已内置于在 macOS 和 Microsoft Windows 下的安装包中,会随GnuCash的安装程序自动安装。Linux发行版用户可能需要使用包管理器专门安装所需的额外软件包。对于SQLite3、MySql和Postgresql分别查找包名类似libdbd-sqlite3、libdbd-mysql或libdbd-pgsql的软件包进行安装。

[b] MySQL 和 PostgreSQL 将数据存储在它们自己的存储系统中。


2.4.4. 创建文件

要创建新的GnuCash文件,按如下步骤操作:

  1. GnuCash菜单栏选择 文件新建新建层级科目向导将启动。

    注意

    如果是首次运行GnuCash,将显示欢迎使用GnuCash!屏幕。此屏幕会在GnuCash帮助手册详细介绍。

  2. 在向导中设置各选项。使用前进取消后退按钮在各步骤间跳转。

2.4.5. 保存数据

按照下面的步骤以你喜欢的名称保存文件:

  1. 菜单栏选择文件另存为…或选择工具栏上的保存按钮。GnuCash会弹出保存窗口。

  2. 从下拉列表中选择文件的数据格式。 默认选择的是 xml,如果你已经设置了数据库后端可以更改为相应的格式。

    依据你选择的数据格式,窗口会按下文所述发生变化。

    • 如果你选择了xmlsqlite3,你会看到像这样的对话框:

      图 2.5. 选择xmlsqlite3时的保存对话框

      选择xml或sqlite3时的保存对话框

      此图展示了选择数据格式xmlsqlite3时的保存对话框。


      名称文本框中输入文件名,无需指定扩展名。GnuCash会自动向文件名添加拓展名.gnucash

      在下方区域中通过浏览目录选择文件保存路径。

      提示

      点击创建文件夹按钮在选择的路径下以指定的名称创建文件夹。

    • 如果你选择了mysqlpostgres文件格式你会看到像这样的对话框:

      图 2.6. 选择mysqlpostgres时的保存对话框

      选择mysql或postgres时的保存对话框

      此图展示了选择数据格式mysqlpostgres时的保存对话框。


      在此窗口中输入数据库连接信息:主机数据库用户名密码

      警告

      保存至mysqlpostgres需要合适的数据库权限,即需要拥有使用给定的数据库名称创建新数据库的权限,或具有给定数据库名称的现有数据库的写入权限。

  3. 点击另存为按钮保存文件。

你如果正在跟踪家庭财务状况,则只需要一个文件。但如果你同时还在管理企业财务,或出于某种原因希望将数据分离存储,则需要多于一个文件。

在结束每次GnuCash会话前,确保使用文件保存保存 工具栏按钮保存数据更改。

注意

经常保存数据以防止由于任何原因丢失是相当重要的,所以GnuCash可以每隔一段时间自动保存打开的文件。保存的间隔时间可以在编辑首选项macOS上的GnuCash首选项)中的通用选项卡下设置。注意此选项只有在你以XML格式保存时才有意义。如果你正在使用数据库,则做出的更改会立即保存,因此保存按钮和保存菜单项呈灰色。

2.4.6. 打开数据

要打开存在的文件或数据库,从菜单中选择文件打开。在弹出的窗口中,选择 数据格式。如果你选择了文件,则在下方的面板浏览文件夹选择你想打开的文件;否则,输入所需的数据库连接信息。

提示

GnuCash记录最近打开的文件列表。打开文件菜单,菜单内列出了最近打开过的文件名称。点击以载入你想打开的文件。

2.4.7. 复制科目层次结构

某些情况下,将现有数据文件的结构复制到新文件可能很有用。例如,你可能会想在不破坏实际会计数据的情况下尝试新的会计技能,或是需要根据会计准则在年末终结当前账簿并以空白账簿开始新一年的会计工作。

GnuCash能够创建科目树的空白副本,只需选择:文件导出导出科目。选择此命令后,GnuCash会要求你提供新的空白文件的名称,随后GnuCash会创建一个新的数据文件,其中仅包含科目层次结构(即不含交易数据)。一旦保存,新文件就能像其它GnuCash数据文件一样以上文所述的方法打开。