Amazon Redshift データベースで列のデータ型を変更するには?
Redshift で列のデータ型を変更できません。Amazon Redshift でデータ型を変更する方法はありますか?
Amazon Redshift データベースで列のデータ型を変更するには?
Redshift で列のデータ型を変更できません。Amazon Redshift でデータ型を変更する方法はありますか?
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;
列の順序を変更したくない場合は、オプションで一時テーブルを作成し、ドロップして目的のサイズの新しいテーブルを作成し、データを再度バルクします。
CREATE TEMP TABLE temp_table AS SELECT * FROM original_table;
DROP TABLE original_table;
CREATE TABLE original_table ...
INSERT INTO original_table SELECT * FROM temp_table;
テーブルを再作成する際の唯一の問題は、権限を再度付与する必要があることと、テーブルが大きすぎる場合は時間がかかることです。
このメソッドは、(大きな) int 列を varchar に変換するために機能します
-- Create a backup of the original table
create table original_table_backup as select * from original_table;
-- Drop the original table, and then recreate with new desired data types
drop table original_table;
create table original_table (
col1 bigint,
col2 varchar(20) -- changed from bigint
);
-- insert original entries back into the new table
insert into original_table select * from original_table_backup;
-- cleanup
drop original_table_backup;