一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java導出oracle表結構實例詳解

Java導出oracle表結構實例詳解

2020-08-23 15:10Java之家 Java教程

這篇文章主要介紹了 Java導出oracle表結構實例詳解的相關資料,需要的朋友可以參考下

 Java導出oracle表結構實例詳解

最近用到的,因為plsql是收費的,不讓用,找了很多方法終于發現了這個。

核心語句

?
1
2
3
4
5
6
7
8
9
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方法,未做封裝。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
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驅動。

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久综合给合久久狠狠狠… | 国内精品久久久久小说网 | 久久久久免费视频 | aⅴ视频在线免播放观看 | 国内9lporm自拍视频区 | 午夜精品网站 | 无限在线观看免费入口 | 日韩三及片 | 日本高清免费中文字幕不卡 | 精品国产中文字幕在线视频 | 爱豆传媒最新视频国产 | 风间由美一区二区播放合集 | 精品女同同性视频很黄很色 | 色婷婷六月丁香在线观看 | 国色天香社区在线视频播放 | 国产精品久久久久这里只有精品 | 99r在线观看 | 久久精品动漫99精品动漫 | 亚洲第一免费播放区 | 调教开发新婚娇妻放荡 | 日本老头4569gay | 俄罗斯三级在线观看级 | 欧美三级不卡视频 | 91成人免费视频 | 亚洲精品中文字幕久久久久久 | 日韩免费在线视频观看 | 国产精品反差婊在线观看 | 欧美日韩亚洲一区二区三区在线观看 | 亚洲欧美另类在线观看 | 欧美╳bbbb | 免费永久观看美女视频网站网址 | 日本亚洲娇小与黑人tube | 惩罚狠h调教灌满 | piss美女厕所小便 | 精品一产品大全 | 亚洲免费闲人蜜桃 | 国产香蕉一区二区精品视频 | 欧美亚洲综合另类 | 91大神亚洲影视在线 | 韩国甜性涩爱免费观看 | 精品精品国产自在香蕉网 |