使用PostgreSQL,将integer
列类型迁移到string
列类型的命令是什么?
显然,我希望通过将旧的整数数据转换为字符串来保留数据。
答案 0 :(得分:8)
您可以开箱即用INTEGER
转换为CHARACTER VARYING
,您只需ALTER TABLE
查询字符串列类型:
PostgreSQL 9.3架构设置:
CREATE TABLE tbl (col INT);
INSERT INTO tbl VALUES (1), (10), (100);
ALTER TABLE tbl ALTER COLUMN col TYPE CHARACTER VARYING(10);
查询1 :
SELECT col, pg_typeof(col) FROM tbl
<强> Results 强>:
| col | pg_typeof |
|-----|-------------------|
| 1 | character varying |
| 10 | character varying |
| 100 | character varying |
答案 1 :(得分:0)
我建议采用四个步骤:
update myTable set temp=cast(intColumn as text)
的内容,请参阅http://www.postgresql.org/docs/9.3/static/ddl-alter.html了解更多有趣的数字&gt;字符串转换确保temp中的所有内容都符合您的需要。
这假设您可以在没有连接客户端的情况下执行操作;离线。如果您需要在联机表中进行此(剧烈)更改,请查看设置具有实时更新触发器的新表,然后在原子操作中交换到新表。见http://www.postgresql.org/docs/9.3/static/ddl-alter.html