And*_*rew 269 sql oracle copy database-table
我知道声明:
create table xyz_new as select * from xyz;
Run Code Online (Sandbox Code Playgroud)
哪个复制结构和数据,但如果我只想要结构呢?
Jim*_*son 411
只需使用不会选择任何行的where子句:
create table xyz_new as select * from xyz where 1=0;
Run Code Online (Sandbox Code Playgroud)
以下内容不会复制到新表中:
这也不处理分区
Dav*_*sta 83
我使用了你接受了很多的方法,但有人指出它不会复制约束(除了NOT NULL,我认为).
如果要复制完整结构,则更高级的方法是:
SET LONG 5000
SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME' ) FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
这将为您提供完整的创建语句文本,您可以根据需要修改该文本以创建新表.您当然必须更改表的名称和所有约束.
(您也可以使用EXP/IMP在旧版本中执行此操作,但现在更容易了.)
编辑添加 如果您所使用的表位于不同的架构中:
SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME', 'OTHER_SCHEMA_NAME' ) FROM DUAL;
Run Code Online (Sandbox Code Playgroud)
bra*_*iel 15
使用sql developer选择表并单击DDL选项卡
在sql工作表中运行它时,可以使用该代码创建一个没有数据的新表
sqldeveloper是oracle免费使用的应用程序.
如果表有序列或触发器,ddl有时也会为你生成序列或触发器.你必须要小心你的命令,并知道何时打开或关闭触发器.
sun*_*leo 14
create table xyz_new as select * from xyz where rownum = -1;
Run Code Online (Sandbox Code Playgroud)
为了避免反复迭代并根据1 = 2的条件插入任何内容
小智 5
你可以这样做
Create table New_table as select * from Old_table where 1=2 ;
,但要小心
你创建的表没有像old_table那样有任何Index、PK等。
| 归档时间: |
|
| 查看次数: |
544826 次 |
| 最近记录: |