如何更改Amazon Redshift数据库中的列数据类型?
我无法更改Redshift中的列数据类型;有什么方法可以修改Amazon Redshift中的数据类型吗?
发布于 2013-06-14 15:22:28
正如ALTER TABLE documentation中所述,您可以使用以下命令更改VARCHAR
列的长度
ALTER TABLE table_name
{
ALTER COLUMN column_name TYPE new_data_type
}
对于其他列类型,我能想到的就是添加一个具有正确数据类型的新列,然后将旧列中的所有数据插入到新列中,最后删除旧列。
使用与此类似的代码:
ALTER TABLE t1 ADD COLUMN new_column ___correct_column_type___;
UPDATE t1 SET new_column = column;
ALTER TABLE t1 DROP COLUMN column;
ALTER TABLE t1 RENAME COLUMN new_column TO column;
将会有模式更改--新添加的列将是表中的最后一列(这可能是COPY
语句的问题,请记住这一点--您可以使用COPY
定义列顺序)
发布于 2014-12-23 01:24:40
要避免Tomasz提到的模式更改,请执行以下操作:
BEGIN TRANSACTION;
ALTER TABLE <TABLE_NAME> RENAME TO <TABLE_NAME>_OLD;
CREATE TABLE <TABLE_NAME> ( <NEW_COLUMN_DEFINITION> );
INSERT INTO <TABLE_NAME> (<NEW_COLUMN_DEFINITION>)
SELECT <COLUMNS>
FROM <TABLE_NAME>_OLD;
DROP TABLE <TABLE_NAME>_OLD;
END TRANSACTION;
发布于 2019-07-19 00:04:20
(最近更新)可以在Redshift中更改varchar列的类型。
ALTER COLUMN column_name TYPE new_data_type
示例:
CREATE TABLE t1 (c1 varchar(100))
ALTER TABLE t1 ALTER COLUMN c1 TYPE varchar(200)
这是文档link
https://stackoverflow.com/questions/17101918
复制相似问题