最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java導出oracle表結(jié)構(gòu)實例詳解

 更新時間:2017年03月03日 14:13:31   投稿:lqh  
這篇文章主要介紹了 Java導出oracle表結(jié)構(gòu)實例詳解的相關(guān)資料,需要的朋友可以參考下

 Java導出oracle表結(jié)構(gòu)實例詳解

最近用到的,因為plsql是收費的,不讓用,找了很多方法終于發(fā)現(xiàn)了這個。

核心語句

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驅(qū)動。

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關(guān)文章

  • Java中RocketMQ的延遲消息詳解

    Java中RocketMQ的延遲消息詳解

    這篇文章主要介紹了Java中RocketMQ的延遲消息詳解,RocketMQ是一款開源的分布式消息系統(tǒng),基于高可用分布式集群技術(shù),提供低延時的、高可靠、萬億級容量、靈活可伸縮的消息發(fā)布與訂閱服務(wù),需要的朋友可以參考下
    2023-09-09
  • POI XSSFSheet shiftRows bug問題解決

    POI XSSFSheet shiftRows bug問題解決

    這篇文章主要介紹了POI XSSFSheet shiftRows bug問題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • MybatisPlus使用queryWrapper如何實現(xiàn)復雜查詢

    MybatisPlus使用queryWrapper如何實現(xiàn)復雜查詢

    這篇文章主要介紹了MybatisPlus使用queryWrapper如何實現(xiàn)復雜查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教。
    2022-01-01
  • springboot實現(xiàn)FastJson解析json數(shù)據(jù)的方法

    springboot實現(xiàn)FastJson解析json數(shù)據(jù)的方法

    本篇文章主要介紹了springboot實現(xiàn)FastJson解析json數(shù)據(jù)的方法,非常具有實用價值,需要的朋友可以參考下
    2017-04-04
  • sa-token?路由攔截式鑒權(quán)使用示例詳解

    sa-token?路由攔截式鑒權(quán)使用示例詳解

    這篇文章主要為大家介紹了sa-token?路由攔截式鑒權(quán)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • Java實現(xiàn)文本查重的方法詳解

    Java實現(xiàn)文本查重的方法詳解

    Ansj 是一個開源的 Java 中文分詞工具,基于中科院的 ictclas 中文分詞算法,采用隱馬爾科夫模型(HMM),比其他常用的開源分詞工具(如 MMseg4j)的分詞準確率更高,下面我們就來使用它實現(xiàn)文本查重功能吧
    2024-04-04
  • 使用mybatisPlus的queryWrapper做左聯(lián)接,內(nèi)聯(lián)接方式

    使用mybatisPlus的queryWrapper做左聯(lián)接,內(nèi)聯(lián)接方式

    本文介紹了如何使用Mybatis-Plus的QueryWrapper進行SQL查詢,包括左連接、內(nèi)連接等操作,通過示例代碼展示了如何構(gòu)建復雜的SQL查詢,并將結(jié)果存儲在List對象中返回,希望給讀者提供參考
    2025-03-03
  • Java刪除二叉搜索樹最大元素和最小元素的方法詳解

    Java刪除二叉搜索樹最大元素和最小元素的方法詳解

    這篇文章主要介紹了Java刪除二叉搜索樹最大元素和最小元素的方法,結(jié)合實例形式詳細分析了java針對二叉搜索樹的基本遍歷、查找、判斷、刪除等相關(guān)操作技巧,需要的朋友可以參考下
    2020-03-03
  • SpringBoot整合Redis實現(xiàn)消息發(fā)布與訂閱的示例代碼

    SpringBoot整合Redis實現(xiàn)消息發(fā)布與訂閱的示例代碼

    能實現(xiàn)發(fā)送與接收信息的中間介有很多,比如:RocketMQ、RabbitMQ、ActiveMQ、Kafka等,本文主要介紹了Redis的推送與訂閱功能并集成Spring Boot的實現(xiàn),感興趣的可以了解一下
    2022-08-08
  • 關(guān)于Java for循環(huán)的正確用法介紹

    關(guān)于Java for循環(huán)的正確用法介紹

    Java里的循環(huán)結(jié)構(gòu)我們可以通過while、do-while、for、foreach等方式實現(xiàn)循環(huán),這篇文章會把這幾種循環(huán)方式都給大家講解到,但本文主要介紹for循環(huán)的使用,感興趣的同學可以參考閱讀
    2023-05-05

最新評論

盐山县| 汝阳县| 综艺| 富蕴县| 克拉玛依市| 色达县| 鹰潭市| 长顺县| 偃师市| 宣城市| 怀宁县| 深泽县| 石屏县| 襄汾县| 大新县| 盘锦市| 利津县| 高雄县| 吕梁市| 沅江市| 盈江县| 香港 | 明溪县| 阳朔县| 阿瓦提县| 清镇市| 阿拉尔市| 昭觉县| 两当县| 七台河市| 辰溪县| 阳信县| 怀远县| 微博| 华宁县| 盈江县| 辉南县| 渭源县| 杂多县| 陆良县| 卓资县|