如何在oracle中交换表名

时间:2012-01-30 02:50:39

标签: oracle

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

3 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

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

要重命名,您必须发出

alter table table_name rename to new_table_name;

答案 2 :(得分: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;

分享并享受。