Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.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
如何在PostgreSQL中管理初始数据?_Sql_Postgresql_Flyway - Fatal编程技术网

如何在PostgreSQL中管理初始数据?

如何在PostgreSQL中管理初始数据?,sql,postgresql,flyway,Sql,Postgresql,Flyway,我有一个带有postgresql数据库的项目。我用Flyway处理迁移。现在我有了一些初始数据,希望在应用程序启动时添加到数据库中。这是一个数据,应该总是在一开始就存在。如何正确处理此数据初始化 我一直在考虑使用飞行路线。如果sql文件的哈希值发生更改,它将始终运行。问题是,然后我需要用sql insert语句构造它。问题是,如果对象已经存在怎么办?理想情况下,我希望可以在sql中指定数据,然后迁移或者在数据不存在时将其插入表中。但它应该查找每个字段,而不仅仅是主键。因为如果我想更改一行中的某个

我有一个带有postgresql数据库的项目。我用Flyway处理迁移。现在我有了一些初始数据,希望在应用程序启动时添加到数据库中。这是一个数据,应该总是在一开始就存在。如何正确处理此数据初始化


我一直在考虑使用飞行路线。如果sql文件的哈希值发生更改,它将始终运行。问题是,然后我需要用sql insert语句构造它。问题是,如果对象已经存在怎么办?理想情况下,我希望可以在sql中指定数据,然后迁移或者在数据不存在时将其插入表中。但它应该查找每个字段,而不仅仅是主键。因为如果我想更改一行中的某个内容,那么我希望该内容更新到数据库中。当然,我总是可以删除表的全部内容,然后运行迁移,但从长远来看,这不是很麻烦吗?像往常一样,经过一点编辑后,我需要删除表并运行迁移。。。我只是想知道是否有更好的方法来处理初始数据?

您可以像其他方法一样,通过插入或复制列来指定主键值。对于前者,您可以添加一个来进行任何可能的更改。如果您使用的是9.4或更低版本,ON CONFLICT不可用,因此您只能使用DELETE和简单的INSERT或COPY,尽管知道主键意味着您不必删除整个表。

ON CONFLICT DO UPDATE子句是否也适用于COPY命令?我在网上没有看到这样的例子。只有使用INSERTI才能更清晰——它只能使用INSERT。