`

提取数据库中表的数据字典

阅读更多
1、下载ojdbc6-11.2.0.1.jar
2、下载poi-3.2-FINAL.jar
3、测试代码如下:
public class DataDictionary {

    public static Connection getConnection() {

        Connection connection = null;
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver");
            connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:orcl", "scott", "tiger");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }

    public static void main(String[] args) throws SQLException {

        try {
            HSSFWorkbook wb = new HSSFWorkbook();
            HSSFSheet sheet = null;
            Connection connection = getConnection();
            Statement stmt = connection.createStatement();
            StringBuffer strbuf = new StringBuffer();
            strbuf.append("SELECT A.*,B.comments");
            strbuf.append(" FROM all_tab_columns A,DBA_COL_COMMENTS B");
            strbuf.append(" WHERE A.owner=B.owner");
            strbuf.append(" AND A.table_name=B.table_name");
            strbuf.append(" AND A.COLUMN_NAME=B.COLUMN_NAME");
            strbuf.append(" AND A.owner='SCOTT'");
            strbuf.append(" ORDER BY A.TABLE_NAME, A.COLUMN_ID");
            ResultSet rs = stmt.executeQuery(strbuf.toString());

            String tb = "";
            int k = 0;
            while (rs.next()) {
                if (!tb.equals(rs.getString("TABLE_NAME"))) {
                    sheet = wb.createSheet(rs.getString("TABLE_NAME"));
                    HSSFRow row = sheet.createRow(0);
                    setCellGBKValue(row.createCell(0), "COLUMN_NAME");
                    setCellGBKValue(row.createCell(1), "DATA_TYPE");
                    setCellGBKValue(row.createCell(2), "NULLABLE");
                    setCellGBKValue(row.createCell(3), "COMMENTS");
                    k = 1;
                } else {
                    k++;
                }
                tb = rs.getString("TABLE_NAME");
                HSSFRow row = sheet.createRow(k);
                setCellGBKValue(row.createCell(0), rs.getString("COLUMN_NAME"));
                String str = rs.getString("DATA_TYPE");
                StringBuilder sb = new StringBuilder();
                sb.append(str);
                if ("NUMBER".equals(str)) {
                    String precision = rs.getString("DATA_PRECISION");
                    if (precision != null) {
                        sb.append("(" + precision);
                    }
                    String scale = rs.getString("DATA_SCALE");
                    if (scale != null && !"0".equals(scale)) {
                        sb.append(", " + rs.getString("DATA_SCALE"));
                    }
                    if (precision != null) {
                        sb.append(")");
                    }
                }
                if ("VARCHAR2".endsWith(str)) {
                    sb.append("(" + rs.getString("DATA_LENGTH") + ")");
                }

                setCellGBKValue(row.createCell(1), sb.toString());
                setCellGBKValue(row.createCell(2), rs.getString("NULLABLE"));
                setCellGBKValue(row.createCell(3), rs.getString("COMMENTS"));
                sheet.autoSizeColumn((short) 0);
                sheet.autoSizeColumn((short) 1);
                sheet.autoSizeColumn((short) 2);
                sheet.autoSizeColumn((short) 3);
            }

            FileOutputStream fileOut = new FileOutputStream("D:\\数据字典.xls");
            wb.write(fileOut);
            fileOut.close();
            rs.close();
            stmt.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void setCellGBKValue(HSSFCell cell, String value) {
        cell.setCellType(HSSFCell.CELL_TYPE_STRING);
        HSSFRichTextString hssfRichTextString = new HSSFRichTextString(value);
        cell.setCellValue(hssfRichTextString);
    }
}
分享到:
评论

相关推荐

    数据库转成数据字典工具类,能完美的从数据库导出数据字典。

    5. **注释解析**:数据库中的表和字段可能有相关的注释,工具应能读取并包含在数据字典中,以便更好地理解数据含义。 6. **关系图绘制**:为了直观展示表之间的关系,工具可能会生成ER图或者关系图,帮助用户快速...

    根据数据字典生成数据库表

    2. **创建表结构**:基于数据字典中的表名和字段名,编写SQL的CREATE TABLE语句,定义表结构,包括字段名、数据类型和约束。 3. **添加字段说明**:在数据库表的元数据中,可以为每个字段添加注释,这通常是通过...

    用友金蝶数据库表字典.zip

    例如,如果你想从用友或金蝶数据库中提取特定的业务信息,你需要知道哪些表包含这些信息,以及如何通过正确的字段连接这些表。 总的来说,《用友金蝶数据库表字典》为IT专业人员提供了一个深入洞察这两大企业级财务...

    从pgsql 数据库导出数据字典

    数据字典是数据库中的一个特殊集合,它包含了关于表、视图、索引、用户、权限等数据库对象的信息。对于数据库管理员和开发人员来说,数据字典是理解和维护数据库的关键资源。它提供了关于数据库设计、性能优化和故障...

    数据库逆向工程,根据数据库表生成数据字典.zip

    数据库逆向工程是一种重要的数据库管理和开发技术,它主要用于从现有的数据库中提取结构信息,然后将这些信息转换为可读性更高、易于理解的形式,如数据字典或模型图。在这个过程中,开发者可以清晰地了解数据库的...

    K3 11版 数据库 系统 数据 字典

    在K3 11版中,数据字典的提取可能涉及到以下关键知识点: 1. **数据库设计**:K3数据库的设计遵循了规范化的理论,可能包括第三范式(3NF)或更高范式,以减少数据冗余和提高数据一致性。数据字典提供了对这些设计...

    oracle 数据库常用数据字典梳理.docx

    Oracle 数据库管理系统中,数据字典是一个核心组件,用于存储数据库对象的元数据,如表、索引、视图、存储过程等。数据字典的字段定义可以分为两大类:静态视图和动态视图。 静态视图是指存储在数据文件中的数据...

    用友T3数据库字典

    在数据库字典中,用户可以找到关于各个业务对象的数据定义,例如客户、供应商、库存商品、应收账款、应付账款等。这些信息对于理解和维护用友T3的数据库至关重要,因为它揭示了数据如何在系统内部组织和关联。通过...

    数据字典生成器 支持多种数据库,可生成word格式的数据字典

    生成器将自动提取数据库信息,填充到预设的模板中,最后生成完成的数据字典文档。 总的来说,这款数据字典生成器是一款实用的工具,它简化了数据库管理的工作流程,提高了团队协作效率,尤其对于需要跨平台工作的...

    数据库数据字典生成工具

    总之,数据库数据字典生成工具是数据库管理和开发中不可或缺的辅助工具,它能提高工作效率,确保数据的一致性和准确性。无论是在Oracle还是MySQL环境中,合理使用这类工具都能显著提升数据库管理的质量和效率。

    SQL数据字典导出工具

    在IT行业中,数据字典是数据库管理系统中的一个重要组成部分,它记录了数据库中所有对象的详细信息,包括但不限于表、视图、字段、索引、约束以及其它元数据。这款工具的主要目标就是帮助用户轻松地获取和导出这些...

    如何快速的为现有数据库建立数据字典?

    数据字典是数据库管理系统中的一个重要组成部分,它存储了关于数据库结构、字段、关系以及其它元数据的信息。在数据库设计和管理中,建立数据字典能够帮助我们更好地理解数据的组织方式,提高数据管理和查询效率。...

    java生成数据库字典表mysql doc-generator

    1. 数据库字典表:数据库字典表是数据库管理系统中的一个重要组成部分,它记录了数据库的所有元数据,包括表、视图、索引、字段等对象的详细信息。这些信息对于数据库的设计、管理和维护都至关重要。 2. 导出字典表...

    布扣数据字典生成器 支持多种数据库的数据字典生成

    数据字典是数据库管理系统中的一个重要组成部分,它记录了数据库中所有表、字段、索引等对象的详细信息,包括名称、类型、长度、是否可为空、默认值等元数据。对于大型项目或复杂数据库结构,手动创建和维护数据字典...

    数据字典导出工具

    数据字典是数据库管理系统中的一个重要组成部分,它存储关于数据库本身的信息,如表、列、索引、用户权限等。在IT行业中,数据字典的管理对于数据库设计、维护和优化至关重要。本文将深入探讨“数据字典导出工具”,...

    从oracle生成表的数据字典方法

    在Oracle数据库管理中,数据字典是一个非常重要的工具,它能够帮助我们理解数据库结构、表定义以及列属性等详细信息。本篇文章将介绍如何从Oracle数据库中利用COMMENT生成Excel格式的数据字典。 #### 一、Oracle...

    DBDocumentGenerator 数据字典 数据库文档 生成工具

    数据字典是数据库管理系统中的一个重要组成部分,它包含了数据库中所有对象的详细信息,如表、视图、存储过程、触发器、索引等。DBDocumentGenerator能自动收集这些信息,生成清晰、规范的数据字典,帮助用户理解...

    mysql/oracle数据字典导出工具

    在MySQL中,数据字典主要分布在information_schema库中,包含如SCHEMATA, TABLES, COLUMNS, VIEWS等表,这些表提供了关于所有数据库、表、列、视图的详细信息。在Oracle中,数据字典分布在多个系统表和视图中,如DBA...

    oracle 导出数据字典的小工具

    Oracle 数据字典是数据库管理系统中的一个重要组成部分,它存储着关于Oracle数据库结构、权限、对象以及系统设置等元数据。在数据库管理和开发过程中,了解和掌握数据字典对于优化查询、故障排查以及数据库设计都至...

    致远OA V5.6数据字典

    【致远OA V5.6数据字典】是企业信息化管理中重要的参考资料,它详细记录了致远OA V5.6版本中所有数据库表、字段及其含义,为系统的配置、维护和开发提供了基础数据支持。数据字典在信息系统设计、数据库管理和数据...

Global site tag (gtag.js) - Google Analytics