Teradataでは、テーブルのバックアップを行ってきた方法は次のようになります。
create table xxx_bak as xxx with data
うまく機能しますが、これがID列を持つテーブルでは機能しないことを発見しました。
一部のデータを台無しにした場合にロールバックできるように、データをそのままにしてテーブルを複製できるバックアップ方法が必要です。
Teradataでは、テーブルのバックアップを行ってきた方法は次のようになります。
create table xxx_bak as xxx with data
うまく機能しますが、これがID列を持つテーブルでは機能しないことを発見しました。
一部のデータを台無しにした場合にロールバックできるように、データをそのままにしてテーブルを複製できるバックアップ方法が必要です。
テーブルのコピーが必要な場合は、同じ構造で、キー列をID列にすることなくテーブルを作成できます。その後、元のテーブルから挿入できます。ただし、同じキーを保持したまま、バックアップから古いテーブルに挿入し直すことはできません。
後で同じキーを使用して復元できるバックアップを作成する方法は、アーカイブ/復元ツールARCMAINを使用することです。
このようなバックアップ:
logon my_server/my_user, my_password;
archive data tables (my_database.my_table), release lock, file=backup_file;
このように復元します。
logon my_server/my_user, my_password;
restore data tables (my_database.my_table), release lock, file=backup_file;
1年半以上経った後、私はついにこの問題に対する巧妙な解決策を見つけました。
create table mydb.mytablebackup as
(select * from (select * from mydb.mytable) x)
with data;
必ず最も内側のサブクエリを修飾してください。修飾しないと機能しません。
これには3つのステップが含まれます。
1. SHOW TABLE orig_Table; (*Get the DDL*)
2. Replace orig_Table with bkp_Table name
3. INSERT INTO bkp_Table SELECT * FROM orig_Table;