首页 > 解决方案 > 如何将整个表备份到单个字段项中?

问题描述

我有几个非常小的表(总共〜1000行),我想定期备份到同一个数据库中,到一个表中。我知道这听起来很奇怪,但请听我说完。

假设我要备份的表名为linux_commands, 和windows_commands. 这两张表大致有:id (pkey), name, definition, config (jsonb), commands

我想每天将这些备份到一个名为的表中commands_backup,并且我希望这个新表有一个日期字段、一个用于 的字段windows_commands和另一个用于的字段linux_commands,因此总共有三列。每天,一个脚本将运行并将当前日期写入日期字段,然后获取整个linux_commands表并将其写入一行中的相关字段,然后对windows_commands.

你会如何设置这样的东西?此外,将整个数据集存储在单个项目中的最佳数据类型是什么?

标签: postgresql

解决方案


在目标表中,windows_commands并且linux_commands应该是 type jsonb

然后你可以使用:

INSERT INTO commands_backup VALUES (
   current_date,
   (SELECT jsonb_agg(to_jsonb(linux_commands)) FROM linux_commands),
   (SELECT jsonb_agg(to_jsonb(windows_commands)) FROM windows_commands)
);

推荐阅读