2016-11-28 5 views
0

特定のuser_idを持つログデータをRedshiftの新しいテーブルに移動したかったのですが、Redshiftでテーブル間でデータを移動する

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; 

しかし、赤方偏移がそれを好きではない:私はWITHブロックlikeで遊んで始めました。

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

赤方偏移はWITHブロックにDELETEを含めていないようです。それでは最高の戦略は何ですか? INNER JOINまたはLEFT OUTER JOINDELETE?テーブル間の「動き」データへ

答えて

1

、あなたがしなければならない:

  • 使用INSERT INTOにコピーデータターゲット表には
  • 使用DELETEには、ソーステーブル
  • からデータを削除します

これらは、それぞれ別のSQLコマンドとして実行する必要があります。ただし、これらのコマンドをBEGIN/END文で囲んで1つのトランザクションとしてコミットすることができます。

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

ありがとうございました。 – Mio

関連する問題