我知道这句话:

create table xyz_new as select * from xyz;

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


当前回答

以上任务可以通过两个简单步骤完成。

步骤1:

CREATE table new_table_name AS(Select * from old_table_name);

上面的查询创建了一个表的副本(包括内容)。

若要获得结构,使用删除表的内容。

步骤2:

DELETE * FROM new_table_name.

希望这能解决你的问题。感谢之前的帖子。给了我很多启发。

其他回答

创建表xyz_new作为select * from xyz;

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

Delete from xyz_new;

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

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

通过其他方式,您可以从下面列出的命令获取表创建的ddl,并执行创建。

SELECT DBMS_METADATA.GET_DDL('TYPE','OBJECT_NAME','DATA_BASE_USER') TEXT FROM DUAL 

类型是表,程序等。

使用这个命令,您可以从数据库对象中获得大部分ddl。

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

接下来使用new_table_name运行脚本

你可以这样做 创建表New_table为select * from Old_table 但是要小心 您创建的表不像old_table那样具有任何Index、PK等。

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

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