postgresql - 如何将整个表备份到单个字段项中?
问题描述
我有几个非常小的表(总共〜1000行),我想定期备份到同一个数据库中,到一个表中。我知道这听起来很奇怪,但请听我说完。
假设我要备份的表名为linux_commands
, 和windows_commands
. 这两张表大致有:id (pkey), name, definition, config (jsonb), commands
。
我想每天将这些备份到一个名为的表中commands_backup
,并且我希望这个新表有一个日期字段、一个用于 的字段windows_commands
和另一个用于的字段linux_commands
,因此总共有三列。每天,一个脚本将运行并将当前日期写入日期字段,然后获取整个linux_commands
表并将其写入一行中的相关字段,然后对windows_commands
.
你会如何设置这样的东西?此外,将整个数据集存储在单个项目中的最佳数据类型是什么?
解决方案
在目标表中,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)
);
推荐阅读
- regex - 带有“或”搜索顺序的正则表达式
- javascript - 在回文+ javascript中查找镜像索引
- java - 小程序漏洞
- python - 在opencv中从numpy转换为cv::UMat
- sql-server - aws 部署、ec2 上的 web 应用程序和 RDS 上的 ms sql db
- java - 在 IntelliJ Idea 中的 JavaFX 中加载图像的问题
- json - 在 Jolt 规范中输出多个重复键而不是数组
- php - 如何在商店页面上隐藏 Woo-commerce 中的父产品
- javascript - 提升 3 层组件
- typescript - 用虚假的默认值初始化打字稿对象