我在postgres 数据库A 中有一个架构 schema1 。我想在名为 schema2 的数据库B 中复制此模式(模型+数据)。
我有什么选择?
我目前: *从数据库A 转储 schema1 *通过转储中的架构重命名方式: schema1 变为 schema2 *在数据库B中恢复 schema2
但我正在寻找一个更有效的程序。例如,通过对postgres二进制文件的直接文件操作。
感谢您的帮助
Jerome Wagner
答案 0 :(得分:1)
首先,请注意(正如其他人评论的那样)Postgresql和Mysql在什么是SCHEMA上有different ideas。在Postgresql(以及SQL标准)中,schema只是数据库中的名称空间,您可以使用它来限定对象名称(类似于目录和文件;并且有一个' public'schema thats用作非限定名称的默认值)。那么,模式与名称的组织有关,而不是隔离:只要我们在数据库中,来自不同模式的对象(表,视图......)是相互可见的;因此,例如,视图可以混合不同模式的表,或者FK可以引用其他模式。相反,不同数据库中的对象是隔离的(它们只共享用户和组),不能连接不同数据库的表。
转储恢复是我能想到的唯一理智的方法,用于将模式从一个数据库复制到另一个数据库。即便如此,从上面来看,如果模式依赖于数据库的其他模式(可能就像是将Java包的类从一个项目复制到另一个项目),则可能不安全/可能。我不会梦想尝试复制二进制文件。