首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >恢复损坏的bytea列

恢复损坏的bytea列
EN

Stack Overflow用户
提问于 2021-05-05 11:38:54
回答 2查看 46关注 0票数 0

我有一个postgres数据库,它有一个bytea列,其中包含损坏的数据。我已经将一个旧的备份恢复到另一台机器上,并且可以看到该数据没有损坏,如下所示。当我比较损坏和恢复的结果时,结果是不同的。

代码语言:javascript
复制
SELECT recordid,encode(secretkey::bytea, 'hex') FROM table;

我只想知道将bytea列从恢复的表导出到损坏的表的最好方法,这样数据就可以完全按原样传输。

EN

回答 2

Stack Overflow用户

发布于 2021-05-05 15:53:48

您可以使用dblink连接到恢复服务器,并通过recordid更新您的secretkey联接。在损坏的DB服务器上,您将执行:

代码语言:javascript
复制
UPDATE table SET
  secretkey = t.secretkey
FROM
  dblink(
    'host=your.host dbname=recoverydb...',
    'SELECT recordid, secretkey FROM table'
  ) t(recordid integer, secretkey bytea)
WHERE
  recordid = t.recordid 

您可以使用foreign data wrapper而不是dblink来访问恢复的数据。

您可以备份table,然后将其恢复到名为table_recovered的数据库中,并在update语句的FROM部分中使用它。

票数 0
EN

Stack Overflow用户

发布于 2021-05-10 13:19:00

感谢您提供的信息。我假设您可以跨多个数据库运行查询,如果它们在同一个PSQL实例中,但显然不是,所以dblink对我有很大帮助。我最终备份了工作表,并将其作为mm_backup恢复到生产PSQL实例中,并执行以下操作以供参考。

代码语言:javascript
复制
CREATE EXTENSION dblink;
UPDATE mediarecords 
SET secretkey = T1.secretkey
FROM dblink('host=localhost user=xxxxx password=xxxxx dbname=mm_backup',
    'SELECT recordid, secretkey FROM mediarecords'
  ) AS T1(recordid integer, secretkey bytea)
WHERE
mediarecords.recordid = T1.recordid;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67394890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档