首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL更新工具?

PostgreSQL更新工具?
EN

Server Fault用户
提问于 2011-11-03 19:53:23
回答 1查看 106关注 0票数 1

是否有一个工具( Perl、Ruby、online SaaS)可以进行PostgreSQL数据库转储、新模式和迁移(w/o数据丢失)?处理删除和添加依赖关系有点麻烦。

EN

回答 1

Server Fault用户

发布于 2011-11-03 20:14:11

简短回答:不。

更长的答案:神奇地确定从模式A到模式B的路径超出了计算机程序的能力,甚至像数据库系统一样复杂。人类需要参与其中。

数据库升级过程应包括创建一个更新脚本(例如,updates-1.3.0.sql),以完成适当和必要的工作,包括:

  • CREATE TABLEALTER TABLEDROP TABLE命令
  • CREATE INDEXDROP INDEX命令
  • 任何SQL魔术(插入/删除/更新数据)
  • 创建适当的触发器/约束
  • 执行VACUUM (或酌情执行VACUUM FULL / VACUUM ANALYZE )

然后,将当前的模式版本(可以存储在DB中)与所拥有的升级脚本列表进行比较,并执行升级脚本,以便转换到新模式。

例如,如果您正在运行模式修订1.2.0并希望转换到1.3.0,则需要应用

updates-1.2.1.sqlupdates-1.2.2.sql,.。. updates-1.3.0.sql

关于升级脚本的一些提示:

  1. 确保所有东西都包装在一个事务中(BEGIN )。。。ROLLBACK。。。COMMIT)。如果出了问题,您希望能够在不让数据库处于异常/不一致状态的情况下中止整个崩溃。
  2. 在编写新架构时编写更新脚本。实际上,我编写用于在空DB中创建新模式的文件的通常方法是开发升级脚本,然后在一个空数据库上运行它并转储结果模式--这确保了“裸金属”脚本产生的结果与您从升级过程中得到的结果相同。
  3. 期望升级失败--包括详细的错误(RAISE EXCEPTION/RAISE NOTICE),并确保执行升级sql脚本的程序在遇到错误时停止。
票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/327545

复制
相关文章

相似问题

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