PostgreSQL将列从整数转换为文本

Dav*_*veB 15 sql database postgresql

我有一个PostgreSQL(9.0)数据库,其列card_id目前是整数类型

我需要将其更改为键入文本

实现这一目标的最佳方法是什么?

我能找到的唯一解决方案是创建一个临时列,删除原始然后重命名,我认为它们可能是一个更好的方法?

Mil*_*dev 27

你有没有尝试过精细手册的建议:

ALTER TABLE table ALTER COLUMN anycol TYPE anytype;
Run Code Online (Sandbox Code Playgroud)

您可能需要添加USING ...到此语句,具体取决于当前和新类型.但在你的具体情况下,我认为不应该是必要的.

  • 这种方法在大多数情况下都很有效,但测试它总能帮助确保它在您的工作负荷下运行良好.假设你有40万亿行.有了这个解决方案,它不会在一个事务中的所有行之后去吗?在这种情况下,您可能希望批量处理数据类型一次更改的行数.为此,您需要临时列和/或表来批量处理数据. (3认同)
  • 改变像这样的列类型实现为表重写,甚至不尝试更新表数据.所以是的,大型表需要相当长的时间和磁盘空间.用户必须自己决定更复杂的过渡的相对优点. (2认同)

Mic*_*ker 7

ALTER TABLE table ALTER COLUMN card_id SET DATA TYPE text;
Run Code Online (Sandbox Code Playgroud)