将自动增量列添加到现有的 redshift 表中

Kun*_*mar 0 amazon-redshift

我在 Redshift 中有一张桌子。

我想添加一个应该具有增量值的列。我不想删除该表并创建一个新表。

请建议在 redshift 表中添加具有自动增量值的列的命令。

谢谢 !!!

nav*_*ram 5

使用 CREATE TABLE 添加带有标识列的新表,然后使用带有 FILLTARGET 修饰符的ALTER TABLE APPEND,然后删除原始表并重命名新表,这是非常快速和简单的。

如果目标表包含源表中不存在的列,请包括 FILLTARGET。该命令使用默认列值或 IDENTITY 值(如果已定义)或 NULL 填充源表中的额外列。

它将列从一个表移动到另一个表,速度非常快,在 dc1.large 节点中花了 4 秒才处理 1GB 表。

通过从现有源表移动数据将行追加到目标表。
...
ALTER TABLE APPEND 通常比类似的 CREATE TABLE AS 或 INSERT INTO 操作快得多,因为数据是移动的,而不是复制的。

/* This is your table to be modified */
CREATE TABLE t_original (a varchar);
INSERT INTO t_original VALUES ('v1'), ('v2');

/* Here are the steps to add IDENTITY column */
CREATE TABLE t_new (id  BIGINT IDENTITY(0,1), a varchar);
ALTER TABLE t_new APPEND FROM t_original FILLTARGET;
DROP TABLE t_original;
ALTER TABLE t_new RENAME TO t_original;

/* Show the result */
SELECT * FROM t_original;
 id | a
----+----
  1 | v2
  0 | v1
(2 rows)
Run Code Online (Sandbox Code Playgroud)