首页 > 解决方案 > 当列非常大时,如何在oracle中删除表中的许多列?

问题描述

我有一个表,该表由 70 列组成。我想删除大约 68 列,我只想要表中的 2 列。所以,无论我尝试了什么,如下所示:

Alter table_name drop column where column
_name not in (col1, col2);

我发现这一步很耗时。有没有其他更好的选择,我可以删除 68 列而无需花费太多时间?

标签: sqloracleoracle11g

解决方案


使用 SELECT 创建一个新表:CREATE new_table AS SELECT col1, col2 FROM old_table

删除旧表(如果您不希望它在回收站中,请使用清除选项)

将新表重命名为旧表名:RENAME new_table TO old_table

如果您希望在新表上使用旧表上的任何索引、触发器、约束或授权,您还需要重新添加它们。


推荐阅读