java导出oracle表结构
来源:互联网 发布:三类医疗器械软件 编辑:程序博客网 时间:2024/06/06 08:33
最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个。
核心语句
SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.object_name), U.OBJECT_TYPE FROM USER_OBJECTS U where U.OBJECT_TYPE = 'TABLE' or U.OBJECT_TYPE = 'VIEW' or U.OBJECT_TYPE = 'INDEX' or U.OBJECT_TYPE = 'PROCEDURE' or U.OBJECT_TYPE = 'SEQUENCE' or U.OBJECT_TYPE = 'TRIGGER' order by U.OBJECT_TYPE desc自己写的Java方法,未做封装。
package sql; import java.io.FileInputStream; import java.io.FileWriter; import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.Properties; public class Main { private static final String TYPE_MARK = "-1"; private static String SQL = "SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.object_name), U.OBJECT_TYPE " + "FROM USER_OBJECTS U " + "where U.OBJECT_TYPE = 'TABLE' " + "or U.OBJECT_TYPE = 'VIEW' " + "or U.OBJECT_TYPE = 'INDEX' " + "or U.OBJECT_TYPE = 'PROCEDURE' " + "or U.OBJECT_TYPE = 'SEQUENCE' " + "or U.OBJECT_TYPE = 'TRIGGER' " + "order by U.OBJECT_TYPE desc"; private static String URL = "jdbc:oracle:thin:@192.168.1.2:1521:orcl"; private static String USERNAME = "abc"; private static String PASSWORD = "abc"; private static String OUTFILE = "tables.sql"; /** * @param args * @throws Exception * @throws */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Properties properties = new Properties(); properties.load(new FileInputStream("config.properties")); URL = properties.getProperty("url", URL); USERNAME = properties.getProperty("username", USERNAME); PASSWORD = properties.getProperty("password", PASSWORD); OUTFILE = properties.getProperty("outfile", OUTFILE); SQL = properties.getProperty("sql", SQL); FileWriter fw = new FileWriter(OUTFILE); Class.forName("oracle.jdbc.driver.OracleDriver"); Connection con = DriverManager.getConnection(URL, USERNAME, PASSWORD); Statement statement = con.createStatement(); ResultSet rs = statement.executeQuery(SQL); Clob ddl; String type = TYPE_MARK; int count = 0; List<String> list = new ArrayList<String>(); while(rs.next()) { ddl = rs.getClob(1); fw.write(ddl.getSubString(1L, (int)ddl.length())); if(!rs.getString(2).equals(type)) { if(!type.equals(TYPE_MARK)) { list.add(type + "," + count); type = rs.getString(2); count = 1; } else { type = rs.getString(2); count ++; } } else count ++; } list.add(type + "," + count); fw.flush(); fw.close(); rs.close(); statement.close(); con.close(); for(String type1 : list) System.out.print(type1.split(",")[0] + ":" + type1.split(",")[1] + ";"); System.out.println(); } }config.properties
url=jdbc:oracle:thin:@192.168.1.2:1521:orcl username=abc password=abc outfile=tables.sql sql=SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.object_name), U.OBJECT_TYPE \ FROM USER_OBJECTS U \ where U.OBJECT_TYPE = 'TABLE' \ or U.OBJECT_TYPE = 'VIEW' \ or U.OBJECT_TYPE = 'INDEX' \ or U.OBJECT_TYPE = 'PROCEDURE' \ or U.OBJECT_TYPE = 'SEQUENCE' \ or U.OBJECT_TYPE = 'TRIGGER' \ order by U.OBJECT_TYPE desc
另外需要jdbc的oracle驱动。
0 0
- java导出oracle表结构
- java导出oracle表结构
- java导出oracle表结构
- java导出oracle表结构
- Oracle 导出表结构
- 导出oracle表结构
- oracle 导出表结构
- oracle导出表结构
- Oracle导出表结构
- oracle导出表结构
- Oracle 导出表结构
- oracle 导出表结构
- oracle 表结构导出
- oracle数据库表结构导出
- Oracle导出所有表结构
- oracle数据库导出表结构
- 快速导出 ORACLE 表结构
- oracle表结构导出导入
- 如何提交代码到github
- Android开发与调试一:adb在win7下安装与使用
- Android 百度地图开发(二)--- 定位功能之MyLocationOverlay,PopupOverlay的使用
- Qualcomm 常见缩写
- 自己写的小型嵌入式操作系统
- java导出oracle表结构
- 【BZOJ 1801】[Ahoi2009]chess 中国象棋
- Android酷炫实用的开源框架(UI框架)
- 【BZOJ 1003】[ZJOI2006]物流运输 【SPFA+DP】
- android利用广播和服务实现一个杀不死的流氓应用
- spark算子(repartition和coalesce)
- ajax动态生成li标签无法与事件绑定
- 为什么很多人写代码会在变量名前面加一个小写的m?
- 解决ora-01455错误