运用 select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT')from dual;的时候,会显示出 CREATE TABLE "SCOTT"."DEPT" ( "DEPTNO" NUMBER(2,0),
"DNAME" VARCHAR2(14),
"LOC" VARCHAR2(13),
CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DE
FAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "USERS"
这些内容
但是我要将ddl语句取出在mysql中建表的时候,只需要
CREATE TABLE "SCOTT"."DEPT"
( "DEPTNO" NUMBER(2,0),
"DNAME" VARCHAR2(14),
"LOC" VARCHAR2(13),
CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO"))
这一部分就可以了,剩下的系统添加的部分mysql也不识别
想询问一下有没有语句直接抽取的是列明,字段名,主外键之类的!!!!
12 个解决方案
#1
打开plsqldev,在sql窗口内写入表名,右键,查看(英文版是view)
#2
然后,右下角有个 view sql
#3
啊 我没说明白 我需要在脚本里调用...developer没法用脚本调用啊...
还有别的方法么
#4
有一个参数,具体忘记了....呼呼
#5
那就自己写咯……
select get_table_ddl('gr_ylzf_ylj') from dual
#6
擦……
create or replace function get_table_ddl(iv_tablename in varchar2) return varchar2 is
v_sql varchar2(4000);
v_col_list varchar2(4000);
begin
v_sql := 'create table ' || iv_tablename || '(' || chr(10);
for r in (select cname, coltype,
case
when precision is not null then
'(' || precision || ',' || scale || ')'
when coltype = 'DATE' then
null
else
'(' || width || ')'
end width, nulls
from col
where tname = upper(iv_tablename)
order by colno) loop
v_col_list := ',' || v_col_list || r.CNAME || ' ' || r.coltype || r.width || ' ' || r.nulls || chr(10) ;
end loop;
v_col_list := substr(v_col_list,2);
v_sql := v_sql || v_col_list || ')';
return v_sql;
end;
#7
BEGIN
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',FALSE);
DBMS_OUTPUT.PUT_LINE( DBMS_METADATA.GET_DDL('TABLE','EMP'));
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'DEFAULT');
END;
------------------------------------------
CREATE TABLE "SCOTT"."EMP"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0),
CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ENABLE,
CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
)
------------------------------------------------------
这个是我能得到的最简单的参数了,只有有没有其他的参数,需要参阅其他文档.
#8
1 用工具:PL/SQL Developer可以生成脚本,有什么没什么都可以自己控制。
Power Designer 更好点,可以直接从数据库里抽取模型,换个方言直接生成MySQL的了。
2 用程序 :自己写。
Power Designer 更好点,可以直接从数据库里抽取模型,换个方言直接生成MySQL的了。
2 用程序 :自己写。
#9
用Power Designer
#10
请问这个怎么用啊 没咋看懂啊...新手 见谅
#11
参考官方的concept
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_metada.htm#ARPLS640
#12
#1
打开plsqldev,在sql窗口内写入表名,右键,查看(英文版是view)
#2
然后,右下角有个 view sql
#3
啊 我没说明白 我需要在脚本里调用...developer没法用脚本调用啊...
还有别的方法么
#4
有一个参数,具体忘记了....呼呼
#5
那就自己写咯……
select get_table_ddl('gr_ylzf_ylj') from dual
#6
擦……
create or replace function get_table_ddl(iv_tablename in varchar2) return varchar2 is
v_sql varchar2(4000);
v_col_list varchar2(4000);
begin
v_sql := 'create table ' || iv_tablename || '(' || chr(10);
for r in (select cname, coltype,
case
when precision is not null then
'(' || precision || ',' || scale || ')'
when coltype = 'DATE' then
null
else
'(' || width || ')'
end width, nulls
from col
where tname = upper(iv_tablename)
order by colno) loop
v_col_list := ',' || v_col_list || r.CNAME || ' ' || r.coltype || r.width || ' ' || r.nulls || chr(10) ;
end loop;
v_col_list := substr(v_col_list,2);
v_sql := v_sql || v_col_list || ')';
return v_sql;
end;
#7
BEGIN
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SEGMENT_ATTRIBUTES',FALSE);
DBMS_OUTPUT.PUT_LINE( DBMS_METADATA.GET_DDL('TABLE','EMP'));
DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'DEFAULT');
END;
------------------------------------------
CREATE TABLE "SCOTT"."EMP"
( "EMPNO" NUMBER(4,0),
"ENAME" VARCHAR2(10),
"JOB" VARCHAR2(9),
"MGR" NUMBER(4,0),
"HIREDATE" DATE,
"SAL" NUMBER(7,2),
"COMM" NUMBER(7,2),
"DEPTNO" NUMBER(2,0),
CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ENABLE,
CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO")
REFERENCES "SCOTT"."DEPT" ("DEPTNO") ENABLE
)
------------------------------------------------------
这个是我能得到的最简单的参数了,只有有没有其他的参数,需要参阅其他文档.
#8
1 用工具:PL/SQL Developer可以生成脚本,有什么没什么都可以自己控制。
Power Designer 更好点,可以直接从数据库里抽取模型,换个方言直接生成MySQL的了。
2 用程序 :自己写。
Power Designer 更好点,可以直接从数据库里抽取模型,换个方言直接生成MySQL的了。
2 用程序 :自己写。
#9
用Power Designer
#10
请问这个怎么用啊 没咋看懂啊...新手 见谅
#11
参考官方的concept
http://docs.oracle.com/cd/E11882_01/appdev.112/e25788/d_metada.htm#ARPLS640