首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"create table new_table as select * from old_table“将给出表结构old_table to new_table?

"create table new_table as select * from old_table“将给出表结构old_table to new_table?
EN

Stack Overflow用户
提问于 2015-12-10 11:36:08
回答 2查看 597关注 0票数 0

我有一个表old_table (在oracle 10g中)

我必须将old_table的全部数据复制到new_table中。

在那一刻,我将使用

代码语言:javascript
复制
create table new_table 
as 
select * from old_table

这个命令会创建一个和old_table完全一样的表吗?

例如,如果old_table在某些列上有一些索引。

如果我使用上面的命令,那么new_table也有相同的索引吗?

EN

回答 2

Stack Overflow用户

发布于 2015-12-10 11:38:56

它将只创建与原始表具有默认设置和相同结构(相同的列和列类型)的表。它不会创建任何索引、约束、授权、触发器和任何其他依赖于原始表的对象。

票数 1
EN

Stack Overflow用户

发布于 2015-12-10 11:51:29

你可以试试这个

代码语言:javascript
复制
create table new_table as select * from old_table
where 1=2;

它不会重复约束(我想除了NOT NULL )。

如果您想复制完整的结构,一个更高级的方法是:

代码语言:javascript
复制
SET LONG 5000
SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME' ) FROM DUAL;

这将为您提供完整的create语句文本,您可以根据需要对其进行修改以创建新表。当然,您必须更改表的名称和所有约束。

(在旧版本中也可以使用EXP/IMP完成此操作,但现在更容易了。)

如果您要查找的表位于不同的模式中:

代码语言:javascript
复制
SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME', 'OTHER_SCHEMA_NAME' ) FROM DUAL;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34193247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档