从一个已知表结构的表创建新表,我要在程序里从一个已知的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,然后执行它。