将现有 VARCHAR 值迁移到 Postgres 8 中的枚举
Migrating existing VARCHAR values to an Enum in Postgres 8
我在生产中有一个 table,其值在一个 varchar 列中,但该列现在必须是一个枚举。我已经创建了枚举,但是如何将现有值迁移到创建的枚举中。
数据库是否会通过简单地更改列类型自动将现有值 map/migrate 到 Enum?
编辑:
ALTER TABLE table ALTER COLUMN column TYPE new_enum_created;
我不知道它是否有用,但我们使用 flyway 进行迁移。
您必须使用 USING
子句来告诉 PostgreSQL 如何转换数据:
ALTER TABLE "table" ALTER COLUMN "column"
TYPE new_enum_created USING "column"::new_enum_created;
我在生产中有一个 table,其值在一个 varchar 列中,但该列现在必须是一个枚举。我已经创建了枚举,但是如何将现有值迁移到创建的枚举中。
数据库是否会通过简单地更改列类型自动将现有值 map/migrate 到 Enum?
编辑:
ALTER TABLE table ALTER COLUMN column TYPE new_enum_created;
我不知道它是否有用,但我们使用 flyway 进行迁移。
您必须使用 USING
子句来告诉 PostgreSQL 如何转换数据:
ALTER TABLE "table" ALTER COLUMN "column"
TYPE new_enum_created USING "column"::new_enum_created;