最近公司项目中需要做一个使用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>
针对不同的数据库,语法不尽相同,请注意。
相关推荐
### 获取数据库中表结构信息 在数据库管理与应用开发过程中,了解特定表的结构是非常重要的。这不仅可以帮助我们更好地理解数据存储方式,还能够指导我们在应用程序中如何有效地使用这些数据。本文将详细介绍如何...
通过执行以下SQL语句,可以获取指定表(替换'你的表名')的所有字段名称、数据类型、是否允许为空以及字段长度: ```sql SELECT syscolumns.name, systypes.name, syscolumns.isnullable, syscolumns.length ...
这将返回一个完整的MySQL创建表语句,用于创建指定表的等效MySQL表结构。 #### 总结 本文介绍的`fnc_table_to_mysql`函数能够有效地帮助用户从Oracle迁移到MySQL时,快速地生成对应的表结构。尽管存在一定的局限性...
`TableStructureToExcel.java`类则专注于将获取的表结构数据转换成Excel文件。这可能包含以下关键部分: 1. **引入Apache POI库**:这是一个流行的API,用于读写Microsoft Office格式,包括Excel。 2. **创建Excel...
以下是一段用于在SQL Server中查看指定表结构的SQL脚本示例: ```sql declare @table_name as varchar(max) set @table_name = 'Ҫ鿴ı' -- 这里假设你想查看名为'Ҫ鿴ı'的表的结构 -- 查询列名、数据类型、最大...
通过执行这个更新操作,你可以确保获取到最新的数据库表结构信息,这对于系统维护、数据分析和二次开发至关重要。 表结构查看器是一个实用工具,可以帮助管理员和开发者直观地查看和理解金蝶EAS数据库中的各个表的...
2. SQL查询:为了获取表结构信息,程序可能会执行SQL命令,如`DESCRIBE`或`SHOW COLUMNS`,来获取表的列名、数据类型、主键等信息。 3. Excel文件生成:程序需要能够创建和写入Excel文件,这可能使用了诸如Apache ...
总之,"Oracle数据库表结构导出工具"是数据库管理员、开发者和分析师的得力助手,它简化了从Oracle数据库获取表结构信息的过程,使得数据管理和分析更加高效。通过使用DBExport,你可以快速将复杂的数据库结构转化为...
"sql表结构自动生成word文档"这个主题,旨在帮助数据库管理员和开发者更有效地将SQL Server数据库中的表结构转换为易于阅读和分享的Word文档。以下是关于这个主题的详细解释: 1. **SQL Server数据库表结构**:表...
"Oracle表结构导Word工具"就是为了解决这个问题而设计的,它能够将Oracle数据库中的表结构方便快捷地导出成Word文档,使得信息更易于阅读和共享。 这个工具的核心功能在于自动化生成表结构的详细文档,包括表名、...
2. 获取工作簿和工作表,可以设定工作表名称为"表结构"。 3. 设置工作表的列宽和样式,以便于阅读。 4. 遍历DataTable,将每一行数据写入Excel工作表的对应行。 5. 保存ExcelPackage到指定的文件路径,如...
在IT领域,特别是数据库管理与开发中,导出SQL Server 2000的表结构是一项常见且重要的任务。这不仅对于数据迁移、备份、分析或文档化数据库结构至关重要,而且也是确保数据完整性和可移植性的关键步骤。下面将详细...
本压缩包文件“精选_64位系统上获取SSDT表地址以及从中获取指定SSDT函数的地址_源码打包”主要关注如何在64位Windows系统上查找SSDT表的地址,并从SSDT中获取特定函数的地址。 在64位系统中,由于处理器架构的不同...
无论是进行数据迁移、性能调优还是简单的数据查询,熟悉如何快速准确地获取表结构信息,都能显著提高工作效率,减少出错率。因此,建议将这些SQL语句作为工具箱的一部分,随时准备在需要时使用,以确保数据库操作的...
本文将深入讲解数据库表结构设计的关键步骤和操作。 首先,设计数据库始于分析数据需求。这是设计过程的基础,需要明确数据库的目的,理解需要从数据库中获取哪些信息。这通常包括识别主要的主题,也就是将要创建的...
标题中的“精选_32位系统上获取SSDT表地址以及从中获取指定SSDT函数的地址_源码打包”指的是一个专门针对32位操作系统的技术主题,涉及到系统内部的System Service Dispatch Table(SSDT)机制,以及如何通过编程...
1. **数据迁移**:当需要将数据从一个数据库迁移到另一个数据库时,可以通过这种方式快速获取原数据库的表结构信息,以便在新数据库中创建相应的表结构。 2. **表结构分析**:开发人员在进行数据库设计或维护时,...
"DBExportDoc V1.0 For Oracle"就是一款专为Oracle数据库设计的表结构导出软件,它能够帮助用户快速、方便地获取数据库中的表结构信息,并生成文档,便于理解和使用。 这款工具的核心功能主要体现在以下几个方面: ...
4. **获取表结构**:对于每个需要备份的表,执行`DESCRIBE tablename;`获取表的结构信息,包括字段名、数据类型、键信息等。 5. **获取表数据**:使用`SELECT * FROM tablename;`获取表的所有数据,可以分批查询以...
- 另外,可以通过反射和 RealmObject 的字段来获取模型类的表结构信息。 4. **代码亲测正常**: - 这表明提供的代码示例已经过测试,可以成功地完成数据库操作,包括升级和查看表结构,这为开发者提供了一个可靠...