SQL/ORACLE
[Oracle]table script 뽑아내기
nineDeveloper
2014. 2. 12. 21:58
728x90
반응형
사용방법 :
select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT')
from dual;
select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT')
from dual;
도움이 될런지.....
오라오라님이 2004-02-09 10:08:24에 작성한 댓글입니다. Edit X
9i 이전 버젼이라면...
exp/imp를 이용하면 됩니다.
exp rows=n 로 해서 data를 제외하고 저장하고,
imp indexfile=myddl.sql 등으로 DDL 구문을 뽑아낼 수가 있습니다. 제일 앞부분은 '#' 주석으로 막혀있는데 이걸 제거하면 되겠지요.
9i 버젼이라면... 위의 분이 말씀하신 대로 dbms_metadata.get_ddl 을 이용하시는 것이 깔끔합니다.
프로시져에서 utl_file을 이용해서 dbms_metadata로 얻는 데이타를 file에 write 하도록 하고 이 프로시져는 dbms_job 등을 이용하면 배치로 돌릴 수 있습니다.
아래 쿼리를 이용하면 현재 유저에 소속된 모든 table 의 DDL문을 뽑아 낼 수가 있습니다.
SELECT DBMS_METADATA.get_ddl ('TABLE', table_name) FROM user_tables
SP의 경우는
SELECT DBMS_METADATA.get_ddl ('PROCEDURE', name) FROM user_source
where type = 'PROCEDURE'
728x90
반응형