2

在 Teradata 中,我一直在为表进行备份的方式是这样的:

create table xxx_bak as xxx with data

效果很好,但我刚刚发现这不适用于具有标识列的表。

我需要一种备份方法,它可以复制一个完整的数据表,这样我就可以回滚它,以防我弄乱了一些数据。

4

3 回答 3

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;
于 2012-05-31T01:05:42.537 回答
1

经过一年半的时间,我终于找到了一个巧妙的解决方案:

create table mydb.mytablebackup as 
(select * from (select * from mydb.mytable) x) 
with data;

一定要限定最里面的子查询,否则它将不起作用。

于 2013-12-06T17:21:06.077 回答
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;
于 2012-05-01T05:51:00.007 回答