如何在不弄乱文件内容的情况下将一小段信息存储在文件中?
How to store a small piece of information in a file without messing with its content?
我的问题:
如何将我的软件的当前版本存储在 PostgreSQL 生成的转储文件中?
我的问题原因:
我使用 PostgreSQL 数据库开发了一个 JAVA 软件。该软件安装在每个用户的本地计算机上,数据库也是每个用户本地和独立的。
我创建了一项功能,以便用户可以备份和恢复他们的数据库。为此,我的 JAVA 代码运行 pg_dump
生成备份文件并运行 pg_restore
恢复它。也就是说,备份只不过是以下命令生成的数据库的转储:
pg_dump.exe -U myuser -h localhost -p 5432 -Fc -f bkpname.bkp mydb
问题是我通常会启动软件更新。该软件的新版本始终与以前版本的转储兼容。但是,旧版本的软件与新版本生成的转储不兼容。
有时会发生用户试图在不兼容的旧版本软件中恢复最新版本的转储。
我希望转储文件包含生成它的软件版本的信息。这样,我可以简单地显示一条消息,通知用户他需要下载最新版本的软件才能恢复备份。
我想到了下面两种形式,但我觉得不合适:
- 将软件版本保存到转储文件名。这会很糟糕
因为用户可以重命名文件。
- 连接转储文件内容中的版本。我耽心
转储文件可能在处理过程中以某种方式被破坏
在其中输入文本或在删除文本的过程中
(在恢复转储之前)。
是否有更好的方法将此信息添加到转储文件中?
一个想法是将信息存储在数据库中的特殊 table 中。
table没有正常使用,在执行转储之前将正确的版本写入其中。
在还原整个转储之前,首先只还原 table:
pg_restore --table dump_version -d mydatabase dumpfile.dmp
然后您检查 table 中的内容并相应地进行。
我的问题:
如何将我的软件的当前版本存储在 PostgreSQL 生成的转储文件中?
我的问题原因:
我使用 PostgreSQL 数据库开发了一个 JAVA 软件。该软件安装在每个用户的本地计算机上,数据库也是每个用户本地和独立的。
我创建了一项功能,以便用户可以备份和恢复他们的数据库。为此,我的 JAVA 代码运行 pg_dump
生成备份文件并运行 pg_restore
恢复它。也就是说,备份只不过是以下命令生成的数据库的转储:
pg_dump.exe -U myuser -h localhost -p 5432 -Fc -f bkpname.bkp mydb
问题是我通常会启动软件更新。该软件的新版本始终与以前版本的转储兼容。但是,旧版本的软件与新版本生成的转储不兼容。
有时会发生用户试图在不兼容的旧版本软件中恢复最新版本的转储。
我希望转储文件包含生成它的软件版本的信息。这样,我可以简单地显示一条消息,通知用户他需要下载最新版本的软件才能恢复备份。
我想到了下面两种形式,但我觉得不合适:
- 将软件版本保存到转储文件名。这会很糟糕 因为用户可以重命名文件。
- 连接转储文件内容中的版本。我耽心 转储文件可能在处理过程中以某种方式被破坏 在其中输入文本或在删除文本的过程中 (在恢复转储之前)。
是否有更好的方法将此信息添加到转储文件中?
一个想法是将信息存储在数据库中的特殊 table 中。
table没有正常使用,在执行转储之前将正确的版本写入其中。
在还原整个转储之前,首先只还原 table:
pg_restore --table dump_version -d mydatabase dumpfile.dmp
然后您检查 table 中的内容并相应地进行。