Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 添加列后如何将数据恢复到postgresql数据库?_Database_Postgresql_Psql_Restore_Dump - Fatal编程技术网

Database 添加列后如何将数据恢复到postgresql数据库?

Database 添加列后如何将数据恢复到postgresql数据库?,database,postgresql,psql,restore,dump,Database,Postgresql,Psql,Restore,Dump,我有一个正在开发的postgresql代码数据库(flask,ember)。我做了一个db_dump来备份现有数据。然后我在代码中添加了一列。我必须再次创建数据库,以便新列将位于数据库中。当我试图用psql-d dbname-f dumpfile恢复数据时,我得到了许多错误,例如“关系“xx”已经存在”、“违反外键约束”等 我是新来的。有没有一种方法可以将旧数据恢复到一个新的空数据库,该数据库已经设置了所有关系?或者,当我在代码中添加列时,是否需要“手动”向数据库添加列以保留数据 当您执行pg_

我有一个正在开发的postgresql代码数据库(flask,ember)。我做了一个
db_dump
来备份现有数据。然后我在代码中添加了一列。我必须再次创建数据库,以便新列将位于数据库中。当我试图用
psql-d dbname-f dumpfile
恢复数据时,我得到了许多错误,例如“关系“xx”已经存在”、“违反外键约束”等


我是新来的。有没有一种方法可以将旧数据恢复到一个新的空数据库,该数据库已经设置了所有关系?或者,当我在代码中添加列时,是否需要“手动”向数据库添加列以保留数据

当您执行
pg_dump
时,您只转储了数据和表结构,bit没有删除任何表。现在,您正在尝试恢复转储,这将尝试重新创建表

你有几个选择(第一个是我推荐的): 将
--clean
添加到
pg_dump
命令中--这将
在您恢复转储文件时删除所有表


您还可以使用
--data only
您的
pg_dump
命令--这将只转储现有数据,而不会尝试重新创建表。但是,您必须找到截断表(或从表中删除数据)的方法,以免遇到任何FK错误或PK冲突。

当您执行
pg_dump
时,您只转储了数据和表结构,bit没有丢弃任何表。现在,您正在尝试恢复转储,这将尝试重新创建表

你有几个选择(第一个是我推荐的): 将
--clean
添加到
pg_dump
命令中--这将
在您恢复转储文件时删除所有表


您还可以使用
--data only
您的
pg_dump
命令--这将只转储现有数据,而不会尝试重新创建表。但是,您必须找到截断表(或从表中删除数据)的方法,以免遇到任何FK错误或PK冲突。

正确的方法是使用
ALTER TABLE
向表中添加列

升级代码时,只需将旧代码替换为新代码即可。数据库不是这样,因为它保存状态。您必须提供修改现有数据库的SQL语句,以使其更改为所需的新状态


要使其易于管理,请使用专门的软件,如Flyway或Liquibase。

正确的方法是使用
ALTER TABLE
向表中添加列

升级代码时,只需将旧代码替换为新代码即可。数据库不是这样,因为它保存状态。您必须提供修改现有数据库的SQL语句,以使其更改为所需的新状态

要使其易于管理,请使用专门的软件,如Flyway或Liquibase