sql - 当列非常大时,如何在oracle中删除表中的许多列?
问题描述
我有一个表,该表由 70 列组成。我想删除大约 68 列,我只想要表中的 2 列。所以,无论我尝试了什么,如下所示:
Alter table_name drop column where column
_name not in (col1, col2);
我发现这一步很耗时。有没有其他更好的选择,我可以删除 68 列而无需花费太多时间?
解决方案
使用 SELECT 创建一个新表:CREATE new_table AS SELECT col1, col2 FROM old_table
删除旧表(如果您不希望它在回收站中,请使用清除选项)
将新表重命名为旧表名:RENAME new_table TO old_table
如果您希望在新表上使用旧表上的任何索引、触发器、约束或授权,您还需要重新添加它们。
推荐阅读
- javascript - React App 中的重复 setInterval 事件
- unreal-engine4 - 有没有办法在 Ue4 中手动调用重叠事件?
- powershell - 我正在尝试使用 Powershell 在 AD 中创建测试帐户/新 ADUser 帐户。收到错误:找不到目录对象
- apache-flink - 使用 AllowNonRestoredState 将 TTL 添加到现有状态并保留快照中的其余状态
- php - 为什么我收到未捕获的错误:调用未定义的函数 get_header()?
- apache - WAMP phpMyAdmin 总是重定向到旧版本
- javascript - 如何在节点内获取节点
- python - 我正在尝试使用 pdfminer 在 python 中将数据提取为 HTML 元素
- java - Java - 如果返回值为零,比较器如何工作?
- coq - 没有在 coq 中明确指定类型的实例