我想将具有特定 user_id 的日志数据移动到 Redshift 上的新表中。我已经开始玩
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;
但是红移不喜欢它。
ERROR: syntax error at or near "DELETE"
LINE 2: DELETE FROM active_connections
Redshift 似乎不包括
DELETE
块中的 WITH
。那么最好的策略是什么?
1 INSERT INTO
,然后是 INNER JOIN
或 LEFT OUTER JOIN
与 DELETE
?
要在表之间“移动”数据,您必须:
INSERT INTO
将数据复制到目标表DELETE
删除源表中的数据它们必须作为单独的 SQL 命令执行。但是,您可以将这些命令包装在 BEGIN/END 语句中,将它们作为一个事务提交:
BEGIN;
INSERT INTO...;
DELETE FROM...;
END;
如果你想移动整个表,请使用 alter table append