在Teradata中,我一直在为表做备份的方式是这样的:
create table xxx_bak as xxx with data
效果很好,但我刚刚发现这对带有标识列的表不起作用。
我需要一个备份方法,可以复制一个表格,其数据完好无损,以便我可以将其回滚,以防万一我弄乱了一些数据。
答案 0 :(得分:1)
如果您只想要表的副本,可以创建一个具有相同结构的表,但不要将键列设置为标识列。然后,您可以从原始表中插入。但是,在保留相同的密钥时,您无法从备份中插回旧表。
使用相同的密钥进行备份的方法是使用归档/恢复工具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 :(得分:0)
这涉及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;
答案 2 :(得分:0)
经过一年半的时间,我终于找到了解决这个问题的方法:
create table mydb.mytablebackup as
(select * from (select * from mydb.mytable) x)
with data;
确保限定最里面的子查询,否则它将无效。