Oracle获取DDL语句
Oracle获取DDL语句
Sql代码
SET LONG 2000000
SET PAGESIZE 0
EXECUTE DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'STORAGE',false);
select dbms_metadata.GET_DDL(u.object_type,u.object_name,'SCOTT') from dba_objects u where owner = 'SCOTT';
查询出来的是Clob而非String 所以需要把Clob转换成String
Java代码
String clobToString(Clob clob) {
try {
// 以 java.io.Reader 对象形式(或字符流形式)
//检索此 Clob 对象指定的 CLOB 值 --Clob的转换
Reader inStreamDoc = clob.getCharacterStream();
// 取得clob的长度
char[] tempDoc = new char[(int) clob.length()];
inStreamDoc.read(tempDoc);
inStreamDoc.close();
return new String(tempDoc);
} catch (IOException e) {
e.printStackTrace();
} catch (SQLException es) {
es.printStackTrace();
}
return null;
}
String sqlSpecialChars(String str) {
str = str.replaceAll("'", "''");
return str;
}
转换之后就可以输出DDL了。