首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

从一个已知表结构的表创建新表

2014-01-28 
从一个已知表结构的表创建新表,我要在程序里从一个已知的A表创建一个B表,要求字段一样且类型一样 有没有什

从一个已知表结构的表创建新表,我要在程序里从一个已知的A表创建一个B表,要求字段一样且类型一样
有没有什么好的建议?不会从系统表找A所有字段的类型,约束等然后再创建吧,是不是忒笨了点?
或者有没有什么方法在程序里获取A表创建的SQL语句??

------解决方法--------------------------------------------------------
create table new_table as select * from old_table where 1=2
------解决方法--------------------------------------------------------
上述语句不会生成索引、约束等
------解决方法--------------------------------------------------------
libin_ftsafe(子陌红尘:当libin告别ftsafe)说得没错啊
你又没讲明白两个表不在同一oracle服务器
要不在同一服务器上,只要两台服务器连通,可以通过创建db_link
然后create table new_table as select * from old_table@otherserver where 1=2


------解决方法--------------------------------------------------------
这时候当然用工具拉,plsql developer,先再a数据库view sql连b,一apply就好啦。
------解决方法--------------------------------------------------------
create table new_table as select * from old_table@otherserver where 1=2;
这样生成的表是没有constraints的,如果想把主键,所以之类的加上,
你可以使用动态SQL来生成.

利用oracle的数据字典:
str_sql varchar2(255);

select 'alter table ' || table_name || ' add constraint '|| constraint_name || ';'
into str_sql
from user_constraints
where owner = 'WACOS'
and table_name in ('SERVICELIST');

execute immediate str_sql;

这个语句仅仅是一个例子而已,它执行的结果就是你想生成的键值的SQL语句,

具体的你可以写一个动态SQL来实现,很简单的.
------解决方法--------------------------------------------------------
拼出创建表的SQL,然后执行它。

        

热点排行