我使用SQL查询创建了table2
:create table2 as select * from table1
Create table as select ...
并未保留table1
中table2
的所有列属性。
是否可以生成一个SQL文件到ALTER
table2
列属性(DATA_LENGTH
,DATA_PRECISION
,DATA_SCALE
,DEFAULT_LENGTH
,{ {1}})包含DATA_DEFAULT
的所有列属性?
谢谢!
答案 0 :(得分:1)
--drop table table2;
create table table1 (
x number(10, 2) default 10,
y varchar2(200) default 'NA'
);
create table table2 as select * from table1;
让我们尝试使用data_default:
create table search_user_tab_columns as
select table_name, column_name, to_lob(DATA_DEFAULT) dd
from user_tab_columns
where table_name = 'TABLE1';
由于data_default是user_tab_columns中的长数据,因此我们必须创建一个中间
search_user_tab_columns (dummy) :-(
select 'ALTER TABLE "' || table_name || '" MODIFY "' || column_name || '" DEFAULT ' || Dd || ';'
from search_user_tab_columns
where table_name = 'TABLE1';
注意:
SELECT DBMS_METADATA.GET_DDL('TABLE','<TABLE_NAME>','<SCHEMA_NAME>') from dual;
如果从现有表创建表,这是更好的方法。但是有时您可以出于特定目的尝试此操作。
答案 1 :(得分:0)
如果您只需要获取属性。
SELECT DBMS_METADATA.GET_DDL('TABLE','<TABLE_NAME>','<SCHEMA_NAME>') from dual;
答案 2 :(得分:0)
您可以看到所有属性
select column_name as "Name"
, nullable as "Null?"
, concat(concat(concat(data_type,'('),data_length),')') as "Type"
from user_tab_columns
where table_name = 'MY_TABLE';