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

解决方案 »

  1.   

    TO:libin_ftsafe(子陌红尘:当libin告别ftsafe) 
    才想起来,这两个表在不同的Oracle服务器上,你那样写的是对一个表空间里的吧?
      

  2.   

    libin_ftsafe(子陌红尘:当libin告别ftsafe)说得没错啊
    你又没讲明白两个表不在同一oracle服务器
    要不在同一服务器上,只要两台服务器连通,可以通过创建db_link
    然后create table new_table as select * from old_table@otherserver where 1=2
      

  3.   

    这时候当然用工具拉,plsql developer,先再a数据库view sql连b,一apply就好啦。
      

  4.   

    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来实现,很简单的.
      

  5.   

    拼出创建表的SQL,然后执行它。
      

  6.   

    唉,吐的了,没有别的方法了么?
    我要从远程库的几个表中取字段然后在本地库创建一个包含这些字段的表,类型,约束,长度,精度什么的都要一致,如果纯粹用拼SQL语句的方法,肯定可以,不过很烦,而且是不是太死板了点??
    真没办法的话只能这样干了,周末就交货了阿