使用 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 JOIN
或 LEFT OUTER JOIN
与 DELETE
?
要在 table 秒之间获取 'move' 数据,您必须:
- 使用
INSERT INTO
将数据复制到目标table
- 使用
DELETE
从源table 删除数据
它们必须作为单独的SQL命令执行。但是,您可以将这些命令包装在 BEGIN/END 语句中以将它们作为一个事务提交:
BEGIN;
INSERT INTO...;
DELETE FROM...;
END;
我想将具有特定 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 JOIN
或 LEFT OUTER JOIN
与 DELETE
?
要在 table 秒之间获取 'move' 数据,您必须:
- 使用
INSERT INTO
将数据复制到目标table - 使用
DELETE
从源table 删除数据
它们必须作为单独的SQL命令执行。但是,您可以将这些命令包装在 BEGIN/END 语句中以将它们作为一个事务提交:
BEGIN;
INSERT INTO...;
DELETE FROM...;
END;