Java实现postgresql、mongodb、sqlserver元数据操作

数据库元数据

元数据(Metadata)是关于数据的数据。具体的概念在上一篇文章有介绍,下面直接进入正题。

postgresql元数据

postgresql的元数据存储在系统表中。下面对部分表的部分属性进行介绍。

  • pg_class表存储着与表有关的元数据,包括索引、序列、视图等。
字段名称 说明
oid 行标识符
relname 表格、索引、视图等的名称
relnamespace 该对象所在命名空间的oid
relowner 该对象的所有者
relkind 表的类型,r :普通表, i :索引,S :序列,v :视图,m :物化视图, c :复合类型,t :TOAST表,f :外部表
relhaspkey 表内是否包含主键,若包含则为真
  • pg_attribute表存储着表中字段的元数据。
字段名称 说明
attrelid 字段所在表的oid,对应pg_class中的oid
attname 字段名称
atttypid 字段的数据类型
attlen 字段长度
attnum 字段编号,从1开始
attnotnull 字段是否可以为空
atthasdef 字段是否有缺省值
  • pg_type表存储着有关数据类型的信息。
字段名称 说明
oid 行标识符
typname 数据类型的名字

mongodb元数据

mongodb的元数据也存储在系统表中。例如:

系统表明 说明
system.namespaces 存储命名空间信息
system.indexes 存储索引信息
system.profile 存储优化器信息
system.users 存储用户信息
system.sources 存储复制集的配置信息和状态信息

由于通过java连接mongodb并不使用jdbc,不是通过执行数据库查询语句进行数据库操作,因此在查询元数据时本文并不借助上述元数据表,获取到的元数据内容也非常有限。

sqlserver元数据

sqlserver的元数据存储在系统表中。下面对部分表的部分属性进行介绍。

  • sys.tables表存储着有关数据表的信息。
字段名称 说明
name 表名
object_id 表标识
schema_id 表所在schema的标识
type_desc 表类型

如果要查询用户表,则type_desc=USER_TABLE

  • sys.columns表存储着有关字段的信息。
字段名称 说明
object_id 字段所在表的标识
name 字段名
column_id 字段标识
system_type_id 字段的系统类型标识
user_type_id 用户定义的字段类型标识
max_length 字段的最大长度
precision 如果字段是数值类型,则标识字段精度
scale 字段的小数位数
is_nullable 字段是否可以为空
  • sys.types表存储着有关数据类型的信息。
字段名称 说明
system_type_id 系统类型标识
user_type_id 用户定义的字段类型标识
name 数据类型名

Java获取元数据

Java获取postgresql元数据

	Class.forName("org.postgresql.Driver");
	Connection connection = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/postgres", "root", "123456");
	Statement stmt = connection.createStatement();
	//排除掉系统表
	ResultSet rs = stmt.executeQuery("select oid,relname from pg_class where relkind = 'r' and relname not like 'pg_%' and relname not like 'sql_%'");
	while(rs.next()){
   
		String tablename = rs.getString
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值