我知道这句话:

create table xyz_new as select * from xyz;

它复制了结构和数据,但如果我只想要结构呢?


当前回答

创建表xyz_new作为select * from xyz;

——这将创建表并复制所有数据。

Delete from xyz_new;

-这将有相同的表结构,但所有复制的数据将被删除。

如果你想克服答案中指定的限制: 如何在不复制数据的情况下创建Oracle表的副本?

其他回答

Create table target_table 
As
Select * 
from source_table 
where 1=2;

Source_table是你要复制其结构的表。

使用pl/sql开发器,你可以在sql工作区或对象资源管理器中右键单击table_name,然后单击“查看”,然后单击“查看sql”,它会生成sql脚本来创建包含所有约束、索引、分区等的表。

接下来使用new_table_name运行脚本

创建表xyz_new作为select * from xyz;

——这将创建表并复制所有数据。

Delete from xyz_new;

-这将有相同的表结构,但所有复制的数据将被删除。

如果你想克服答案中指定的限制: 如何在不复制数据的情况下创建Oracle表的副本?

使用sql developer选择表并单击DDL选项卡

在sql工作表中运行该代码时,可以使用该代码创建没有数据的新表

Sqldeveloper是oracle提供的一个免费应用程序。

如果表有序列或触发器,ddl有时也会为您生成这些。你只需要注意它们的顺序,知道什么时候打开或关闭触发器。

你也可以做

create table abc_new as select * from abc; 

然后截断表abc_new。希望这能满足你的要求。