Alter column data type in Amazon Redshift

前端 未结 9 986
攒了一身酷
攒了一身酷 2020-12-12 20:45

How to alter column data type in Amazon Redshift database?

I am not able to alter the column data type in Redshift; is there any way to modify the data type in Amazo

相关标签:
9条回答
  • 2020-12-12 21:42

    As noted in the ALTER TABLE documentation, you can change length of VARCHAR columns using

    ALTER TABLE table_name
    {
        ALTER COLUMN column_name TYPE new_data_type 
    }
    

    For other column types all I can think of is to add a new column with a correct datatype, then insert all data from old column to a new one, and finally drop the old column.

    Use code similar to that:

    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;
    

    There will be a schema change - the newly added column will be last in a table (that may be a problem with COPY statement, keep that in mind - you can define a column order with COPY)

    0 讨论(0)
  • 2020-12-12 21:42

    UNLOAD and COPY with table rename strategy should be the most efficient way to do this operation if retaining the table structure(row order) is important.

    Here is an example adding to this answer.

    BEGIN TRANSACTION;
    
    ALTER TABLE <TABLE_NAME> RENAME TO <TABLE_NAME>_OLD;
    CREATE TABLE <TABLE_NAME> ( <NEW_COLUMN_DEFINITION> );
    UNLOAD ('select * from <TABLE_NAME>_OLD') TO 's3://bucket/key/unload_' manifest;
    COPY <TABLE_NAME> FROM 's3://bucket/key/unload_manifest'manifest;
    
    END TRANSACTION;
    
    0 讨论(0)
  • 2020-12-12 21:44

    for updating the same column in redshift this would work fine

    UPDATE table_name 
    SET column_name = 'new_value' WHERE column_name = 'old_value'
    

    you can have multiple clause in where by using and, so as to remove any confusion for sql

    cheers!!

    0 讨论(0)
提交回复
热议问题