Postgresql 如何通过文件操作移动postgres架构?

Postgresql 如何通过文件操作移动postgres架构?,postgresql,Postgresql,我在postgres数据库a中有一个模式schema1。我想在数据库B中有一个名为schema2的重复模式(模型+数据) 我有什么选择 我目前: *从数据库A转储schema1 *sed通过转储中的模式重命名实现:schema1变成schema2 *在数据库B中还原schema2 但我正在寻找一个更有效的程序。例如,通过对postgres二进制文件的直接文件操作 谢谢你的帮助 Jerome Wagner首先,要注意(正如其他人所评论的那样)Postgresql和Mysql对什么是模式有着不同的理

我在postgres数据库a中有一个模式schema1。我想在数据库B中有一个名为schema2的重复模式(模型+数据)

我有什么选择

我目前: *从数据库A转储schema1 *sed通过转储中的模式重命名实现:schema1变成schema2 *在数据库B中还原schema2

但我正在寻找一个更有效的程序。例如,通过对postgres二进制文件的直接文件操作

谢谢你的帮助

Jerome Wagner

首先,要注意(正如其他人所评论的那样)Postgresql和Mysql对什么是模式有着不同的理解。在Postgresql(以及SQL标准)中,a只是数据库中的名称空间,您可以使用它来限定对象名称(类似于目录和文件;还有一个“public”模式,它被用作非限定名称的默认值)。因此,模式与名称的组织有关,而不是与隔离有关:只要我们在数据库中,来自不同模式的对象(表、视图……)就相互可见;例如,视图可以混合不同模式的表,或者FK可以引用其他模式。相反,不同数据库中的对象是隔离的(它们只共享用户和组),不能连接不同数据库的表

对于从一个数据库复制模式到另一个数据库,转储恢复是我能想到的唯一明智的方法。即使如此,从上面看,如果模式依赖于数据库的其他模式(就像您正在将Java包的类从一个项目复制到另一个项目),那么可能也不安全/不可能。我不会梦想尝试一个二进制文件的副本。

首先,要知道(正如其他人所评论的)Postgresql和Mysql对什么是模式有什么影响。在Postgresql(以及SQL标准)中,a只是数据库中的名称空间,您可以使用它来限定对象名称(类似于目录和文件;还有一个“public”模式,它被用作非限定名称的默认值)。因此,模式与名称的组织有关,而不是与隔离有关:只要我们在数据库中,来自不同模式的对象(表、视图……)就相互可见;例如,视图可以混合不同模式的表,或者FK可以引用其他模式。相反,不同数据库中的对象是隔离的(它们只共享用户和组),不能连接不同数据库的表


对于从一个数据库复制模式到另一个数据库,转储恢复是我能想到的唯一明智的方法。即使如此,从上面看,如果模式依赖于数据库的其他模式(就像您正在将Java包的类从一个项目复制到另一个项目),那么可能也不安全/不可能。我不会梦想尝试复制二进制文件。

Postgres不是MySQL——尽管外观相似,Postgres的模式并不等同于MySQL的数据库。造成混淆的原因是MySQL将模式作为数据库的别名来实现。不,PostgreSQL不在单个文件或目录中存储数据库/模式/表。Postgres不是MySQL——尽管外观相似,但Postgres的模式并不等同于MySQL的数据库。造成混淆的原因是MySQL将模式作为数据库的别名来实现。不,PostgreSQL不在单个文件或目录中存储数据库/模式/表。