people
100,000 レコード未満のテーブルがあり、次を使用してこのテーブルのバックアップを作成しました。
create table people_backup as select * from people
時間の経過とともにいくつかの新しいレコードをテーブルに追加people
しましたが、最終的にはバックアップ テーブルのレコードを にマージしたいと考えていますpeople
。残念ながらDROP
、新しいレコードが失われるため、テーブルを単純化することはできません!
したがって、主キーに基づいてpeople
、のレコードを使用してテーブル内のレコードを更新したいのですが、これを行う2つの方法が見つかりました。people_backup
id
- テーブルをまとめてマージする
- ある種の派手な相関更新を使用する
すごい!ただし、これらの方法はどちらも使用SET
し、更新する列を指定する必要があります。残念ながら、私は怠け者であり、の構造はpeople
時間の経過とともに変化する可能性があり、CTAS
ステートメントを更新する必要はありませんが、更新/マージ スクリプトを変更する必要があり、それは私にとって不必要な作業のように感じます。
列を指定せずに行全体をマージする方法はありますか? ここで、列を指定しないと、SQL で値を順番に挿入するように指示されることがわかります。ここでINSERT
同じ方法を適用できますか?これは安全ですか?
注意: テーブルの構造はバックアップ間で変更されません