我知道这句话:

create table xyz_new as select * from xyz;

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


当前回答

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

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

其他回答

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

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

简单地写一个查询:

create table new_table as select * from old_table where 1=2;

其中new_table是要创建的新表的名称,old_table是要复制其结构的现有表的名称,这将只复制结构。

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

接下来使用new_table_name运行脚本

如果需要为EXCHANGE PARTITION创建一个表(具有空结构),最好使用“..”为了交换……”条款。不过,它只能从Oracle版本12.2开始使用。

CREATE TABLE t1_temp FOR EXCHANGE WITH TABLE t1;

如果正常的CTAS操作没有精确地复制表结构,则在“交换分区”期间无缝地处理“ORA-14097”。我看到Oracle从原始表中遗漏了一些“DEFAULT”列和“HIDDEN”列的定义。

ORA-14097: ALTER TABLE EXCHANGE中的列类型或大小不匹配 分区

进一步阅读请参阅此…

create table xyz_new as select * from xyz where rownum = -1;

避免反复迭代,并在1=2的条件下不插入任何内容