0

我想将具有特定 user_id 的日志数据移动到 Redshift 上的新表中。我已经开始玩这样WITH的块:

WITH moved_rows AS (
    DELETE FROM sensor_log_enable
    USING sensor_log_disable
    WHERE sensor_log_enable.user_id
       IN (16,17,18)
    RETURNING sensor_log_enable.*
)
INSERT INTO sensor_log_disable
SELECT * FROM moved_rows;

但红移不喜欢它。

ERROR:  syntax error at or near "DELETE"
LINE 2:     DELETE FROM active_connections

Redshift 似乎不包含DELETEWITH块中。那么最好的策略是什么?1INSERT INTO然后是INNER JOINORLEFT OUTER JOINDELETE?

4

1 回答 1

1

要在表之间“移动”数据,您必须:

  • 用于INSERT INTO将数据复制到目标表
  • 用于从源表DELETE删除数据

它们必须作为单独的 SQL 命令执行。但是,您可以将这些命令包装在 BEGIN/END 语句中,以将它们作为一个事务提交:

BEGIN;
INSERT INTO...;
DELETE FROM...;
END;
于 2016-11-29T06:52:00.597 回答