2012-01-30 48 views
3

我有2个oracle表,它们在定义上完全相同,只是在分区定义中有所不同。我想测试一张桌子和另一张桌子的设计。有没有办法交换表名?我不想放弃表格,因为它们很大,需要很长时间才能将数据加载到表格中。如何在oracle中交换表名

回答

2

只需重命名它们。例如,如果您有TABLE_A,请将其重命名为TABLE_A_TEMP。然后将TABLE_B重命名为TABLE_A。然后将TABLE_A_TEMP重命名为TABLE_B。

要重命名,你必须发出

alter table table_name rename to new_table_name; 
8

使用synonym指向真正表。

例如,

CREATE OR REPLACE SYNONYM partition_test FOR partition_table1; 

测试partition_table1,例如select pt.* from partition_test pt;

CREATE OR REPLACE SYNONYM partition_test FOR partition_table2; 

测试partition_table2,例如select pt.* from partition_test pt;

注意测试代码每次都是一样的。

当您完成测试时,删除同义词。

DROP SYNONYM partition_test; 
2

第三种方法是使用视图。假设你的“真实”表名是TABLE_A和TABLE_B。创建一个视图,MY_DATA_VIEW(或其他),并把它指向任何你想要的表为指向:

CREATE OR REPLACE VIEW TEST_VIEW AS SELECT * FROM TABLE_A; 

CREATE OR REPLACE VIEW TEST_VIEW AS SELECT * FROM TABLE_B; 

分享和享受。