在 Teradata 中,我一直在为表进行备份的方式是这样的:
create table xxx_bak as xxx with data
效果很好,但我刚刚发现这不适用于具有标识列的表。
我需要一种备份方法,它可以复制一个完整的数据表,这样我就可以回滚它,以防我弄乱了一些数据。
在 Teradata 中,我一直在为表进行备份的方式是这样的:
create table xxx_bak as xxx with data
效果很好,但我刚刚发现这不适用于具有标识列的表。
我需要一种备份方法,它可以复制一个完整的数据表,这样我就可以回滚它,以防我弄乱了一些数据。
如果您只想要一个表的副本,您可以创建一个具有相同结构但不使键列成为标识列的副本。然后,您可以从原始表中插入它。但是,您将无法在保留相同键的同时从备份中插入回旧表。
制作备份以供以后使用相同的密钥恢复的方法是使用存档/恢复工具 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;
经过一年半的时间,我终于找到了一个巧妙的解决方案:
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;