`

获取指定表的表结构

 
阅读更多

最近公司项目中需要做一个使用excel员工导入的需求,在导入过程中,需要对数据核验,就需要获取相应的表结构的字段类型,及其类型精度。以下为代码:

 

    private Map<String, TableColumnInfo> getColumnInfo() {
        Map<String, String> condition = new HashMap<String, String>();
	// 参数值只能是小写
        condition.put("tableSchema", "public");
        condition.put("tableName", "***");
        List<Map<String, Object>> schemaList = sqlSession.selectList("com.*.*.*.getTableSchemaByCondition", condition);
        
        Map<String, TableColumnInfo> columnMap = new HashMap<String, TableColumnInfo>();
        for (Map<String, Object> map : schemaList) {
            TableColumnInfo column = new TableColumnInfo();
            column.setTableName(String.valueOf(map.get("table_name")));
            column.setColName(String.valueOf(map.get("column_name")));
            column.setColType(String.valueOf(map.get("data_type")));
            column.setNullable(String.valueOf(map.get("is_nullable")));
            if (map.get("character_maximum_length") == null) {
                column.setColLegth(0);
            } else {
                column.setColLegth(Integer.valueOf(String.valueOf(map.get("character_maximum_length"))));
            }
            if (map.get("numeric_precision") == null) {
                column.setNumericPrecision(0);
            } else {
                column.setNumericPrecision(Integer.valueOf(String.valueOf(map.get("numeric_precision"))));
            }
            if (map.get("numeric_scale") == null) {
                column.setNumericScale(0);
            } else {
                column.setNumericScale(Integer.valueOf(String.valueOf(map.get("numeric_scale"))));
            }
            
            columnMap.put(column.getColName(), column);
        }
        return columnMap;
    }

 

public class TableColumnInfo {
    private String  tableName;
    private String  colName;
    private String  colType;
    private int     colLegth;
    private boolean nullable;
    private int     numericPrecision;
    private int     numericScale;

    public String toString() {
        return String.format("%s %s(%s)", new Object[] { this.colName, this.colType, Integer.valueOf(this.colLegth) });
    }

    public String getColName() {
        return this.colName;
    }

    public void setColName(String colName) {
        this.colName = colName;
    }

    public String getColType() {
        return this.colType;
    }

    public void setColType(String colType) {
        this.colType = colType;
    }

    public int getColLegth() {
        return this.colLegth;
    }

    public void setColLegth(int colLegth) {
        this.colLegth = colLegth;
    }

    public String getTableName() {
        return this.tableName;
    }

    public void setTableName(String tableName) {
        this.tableName = tableName;
    }

    public boolean isNullable() {
        return this.nullable;
    }

    public boolean getNullable() {
        return this.nullable;
    }

    public void setNullable(String nullable) {
        if ("YES".equals(nullable))
            this.nullable = true;
        else
            this.nullable = false;
    }

    public int getNumericPrecision() {
        return numericPrecision;
    }

    public void setNumericPrecision(int numericPrecision) {
        this.numericPrecision = numericPrecision;
    }

    public int getNumericScale() {
        return numericScale;
    }

    public void setNumericScale(int numericScale) {
        this.numericScale = numericScale;
    }
}

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.*.*.*">

	<select id="getTableSchemaByCondition" parameterType="map" resultType="map">
		SELECT
		    col.table_schema ,
		    col.table_name ,
		    col.ordinal_position,
		    col.column_name ,
		    col.data_type ,
		    col.character_maximum_length,
		    col.numeric_precision,
		    col.numeric_scale,
		    col.is_nullable,
		    col.column_default ,
		    des.description
		FROM information_schema.columns col 
		LEFT JOIN pg_description des ON col.table_name::regclass = des.objoid AND col.ordinal_position = des.objsubid
		WHERE table_schema = #{tableSchema} AND table_name = #{tableName}
		ORDER BY ordinal_position
	</select>
</mapper>

 针对不同的数据库,语法不尽相同,请注意。

分享到:
评论

相关推荐

    获取数据库中表结构信息

    ### 获取数据库中表结构信息 在数据库管理与应用开发过程中,了解特定表的结构是非常重要的。这不仅可以帮助我们更好地理解数据存储方式,还能够指导我们在应用程序中如何有效地使用这些数据。本文将详细介绍如何...

    获取SqlServer2005表结构

    通过执行以下SQL语句,可以获取指定表(替换'你的表名')的所有字段名称、数据类型、是否允许为空以及字段长度: ```sql SELECT syscolumns.name, systypes.name, syscolumns.isnullable, syscolumns.length ...

    Oracle的表结构转成Mysql的表结构

    这将返回一个完整的MySQL创建表语句,用于创建指定表的等效MySQL表结构。 #### 总结 本文介绍的`fnc_table_to_mysql`函数能够有效地帮助用户从Oracle迁移到MySQL时,快速地生成对应的表结构。尽管存在一定的局限性...

    SqlServer查看表结构

    以下是一段用于在SQL Server中查看指定表结构的SQL脚本示例: ```sql declare @table_name as varchar(max) set @table_name = 'Ҫ鿴ı' -- 这里假设你想查看名为'Ҫ鿴ı'的表的结构 -- 查询列名、数据类型、最大...

    java实现导出oarcle表结构到excel

    `TableStructureToExcel.java`类则专注于将获取的表结构数据转换成Excel文件。这可能包含以下关键部分: 1. **引入Apache POI库**:这是一个流行的API,用于读写Microsoft Office格式,包括Excel。 2. **创建Excel...

    金蝶EAS 表结构查看器.rar

    通过执行这个更新操作,你可以确保获取到最新的数据库表结构信息,这对于系统维护、数据分析和二次开发至关重要。 表结构查看器是一个实用工具,可以帮助管理员和开发者直观地查看和理解金蝶EAS数据库中的各个表的...

    导出数据库的表结构到Excel

    2. SQL查询:为了获取表结构信息,程序可能会执行SQL命令,如`DESCRIBE`或`SHOW COLUMNS`,来获取表的列名、数据类型、主键等信息。 3. Excel文件生成:程序需要能够创建和写入Excel文件,这可能使用了诸如Apache ...

    Oracle数据库表结构导出工具

    总之,"Oracle数据库表结构导出工具"是数据库管理员、开发者和分析师的得力助手,它简化了从Oracle数据库获取表结构信息的过程,使得数据管理和分析更加高效。通过使用DBExport,你可以快速将复杂的数据库结构转化为...

    sql表结构自动生成word文档

    "sql表结构自动生成word文档"这个主题,旨在帮助数据库管理员和开发者更有效地将SQL Server数据库中的表结构转换为易于阅读和分享的Word文档。以下是关于这个主题的详细解释: 1. **SQL Server数据库表结构**:表...

    oracle表结构导word工具

    "Oracle表结构导Word工具"就是为了解决这个问题而设计的,它能够将Oracle数据库中的表结构方便快捷地导出成Word文档,使得信息更易于阅读和共享。 这个工具的核心功能在于自动化生成表结构的详细文档,包括表名、...

    导出sqlserver 2000的表结构

    在IT领域,特别是数据库管理与开发中,导出SQL Server 2000的表结构是一项常见且重要的任务。这不仅对于数据迁移、备份、分析或文档化数据库结构至关重要,而且也是确保数据完整性和可移植性的关键步骤。下面将详细...

    精选_64位系统上获取SSDT表地址以及从中获取指定SSDT函数的地址_源码打包

    本压缩包文件“精选_64位系统上获取SSDT表地址以及从中获取指定SSDT函数的地址_源码打包”主要关注如何在64位Windows系统上查找SSDT表的地址,并从SSDT中获取特定函数的地址。 在64位系统中,由于处理器架构的不同...

    用sql查看表结构,好不容易找到的

    无论是进行数据迁移、性能调优还是简单的数据查询,熟悉如何快速准确地获取表结构信息,都能显著提高工作效率,减少出错率。因此,建议将这些SQL语句作为工具箱的一部分,随时准备在需要时使用,以确保数据库操作的...

    设计数据库(表结构设计)

    本文将深入讲解数据库表结构设计的关键步骤和操作。 首先,设计数据库始于分析数据需求。这是设计过程的基础,需要明确数据库的目的,理解需要从数据库中获取哪些信息。这通常包括识别主要的主题,也就是将要创建的...

    精选_32位系统上获取SSDT表地址以及从中获取指定SSDT函数的地址_源码打包

    标题中的“精选_32位系统上获取SSDT表地址以及从中获取指定SSDT函数的地址_源码打包”指的是一个专门针对32位操作系统的技术主题,涉及到系统内部的System Service Dispatch Table(SSDT)机制,以及如何通过编程...

    Oracle查询指定表的所有字段名和数据类型SQL

    1. **数据迁移**:当需要将数据从一个数据库迁移到另一个数据库时,可以通过这种方式快速获取原数据库的表结构信息,以便在新数据库中创建相应的表结构。 2. **表结构分析**:开发人员在进行数据库设计或维护时,...

    winform导出PGSQL表结构

    2. 获取工作簿和工作表,可以设定工作表名称为"表结构"。 3. 设置工作表的列宽和样式,以便于阅读。 4. 遍历DataTable,将每一行数据写入Excel工作表的对应行。 5. 保存ExcelPackage到指定的文件路径,如...

    Oracle数据库表结构导出工具 DBExportDoc V1.0 For Oracle.rar

    "DBExportDoc V1.0 For Oracle"就是一款专为Oracle数据库设计的表结构导出软件,它能够帮助用户快速、方便地获取数据库中的表结构信息,并生成文档,便于理解和使用。 这款工具的核心功能主要体现在以下几个方面: ...

    php备份整个MySQL数据库,或者指定表的类

    4. **获取表结构**:对于每个需要备份的表,执行`DESCRIBE tablename;`获取表的结构信息,包括字段名、数据类型、键信息等。 5. **获取表数据**:使用`SELECT * FROM tablename;`获取表的所有数据,可以分批查询以...

    realm 数据库升级 goole数据库表结构字段查看

    - 另外,可以通过反射和 RealmObject 的字段来获取模型类的表结构信息。 4. **代码亲测正常**: - 这表明提供的代码示例已经过测试,可以成功地完成数据库操作,包括升级和查看表结构,这为开发者提供了一个可靠...

Global site tag (gtag.js) - Google Analytics