使用 Redshift 将数据从一个 table 移动到另一个

Move data from one table to another with Redshift

我想将具有特定 user_id 的日志数据移动到 Redshift 上的新 table。我开始玩 WITH 方块 like :

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;

但是 redshift 不喜欢它。

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

Redshift 似乎没有在 WITH 块中包含 DELETE。那么最好的策略是什么? 1 INSERT INTO 然后 INNER JOINLEFT OUTER JOINDELETE?

要在 table 秒之间获取 'move' 数据,您必须:

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

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

BEGIN;
INSERT INTO...;
DELETE FROM...;
END;