Java导出oracle表结构实例详解
最近用到的,因为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驱动。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
本文向大家介绍Oracle查看表结构命令详解,包括了Oracle查看表结构命令详解的使用技巧和注意事项,需要的朋友参考一下 获取表: 获取表字段: 获取表注释: 获取字段注释: 总结 以上所述是小编给大家介绍的Oracle查看表结构命令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对呐喊教程网站的支持!
本文向大家介绍mysql修改表结构方法实例详解,包括了mysql修改表结构方法实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了mysql修改表结构方法。分享给大家供大家参考。具体如下: mysql修改表结构使用ALTER TABLE语句,下面就为您详细介绍mysql修改表结构的语句写法,希望对您学习mysql修改表结构方面能有所帮助。 ALTER TABLE允许你修改一个现有表的结
本文向大家介绍oracle 临时表详解及实例,包括了oracle 临时表详解及实例的使用技巧和注意事项,需要的朋友参考一下 在Oracle8i或以上版本中,可以创建以下两种临时表: 1。会话特有的临时表 CREATE GLOBAL TEMPORARY <TABLE_NAME> ( <column specification> ) ON COMMIT PRESERVE ROWS; 2。事务特有的临
问题内容: 我想创建一个SQL脚本,可以重新创建我已经拥有的数据库。我想重新创建内部没有数据的数据库。 那么sqlplus是否可以导出用户的数据库? 问题答案: 有两种基本方法。 首先是导出转储文件。可以使用Datapump实用程序: 了解更多。 Datapump是在Oracle10g中引入的。在数据库的早期版本中,我们可以使用EXP实用程序执行相同的操作。 要导入文件,我们使用匹配(或)实用程序
本文向大家介绍详解 linux mysqldump 导出数据库、数据、表结构,包括了详解 linux mysqldump 导出数据库、数据、表结构的使用技巧和注意事项,需要的朋友参考一下 详解 linux mysqldump 导出数据库、数据、表结构 导出完整的数据库备份: 说明:--add-locks:导出过程中锁定表,完成后回解锁。-q:不缓冲查询,直接导出至标准输出 导出完整的数据库表结构
本文向大家介绍Oracle 正则表达式实例详解,包括了Oracle 正则表达式实例详解的使用技巧和注意事项,需要的朋友参考一下 Oracle 正则表达式实例详解 FORM开发中的按行拆分需求:拆分后的行要有规律,并按前后层次排序 需求分析如下: 现有行: 2 , 2.1 , 2.2 , 2.3 3