91

Amazon Redshift データベースで列のデータ型を変更するには?

Redshift で列のデータ型を変更できません。Amazon Redshift でデータ型を変更する方法はありますか?

4

10 に答える 10

45

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;
于 2014-12-22T17:24:40.327 に答える
8

列の順序を変更したくない場合は、オプションで一時テーブルを作成し、ドロップして目的のサイズの新しいテーブルを作成し、データを再度バルクします。

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;

テーブルを再作成する際の唯一の問題は、権限を再度付与する必要があることと、テーブルが大きすぎる場合は時間がかかることです。

于 2016-04-19T12:30:23.977 に答える
3

このメソッドは、(大きな) 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;
于 2019-02-03T22:27:19.843 に答える