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