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
字段是否有缺省值
字段名称
说明
oid
行标识符
typname
数据类型的名字
mongodb元数据
mongodb的元数据也存储在系统表中。例如:
系统表明
说明
system.namespaces
存储命名空间信息
system.indexes
存储索引信息
system.profile
存储优化器信息
system.users
存储用户信息
system.sources
存储复制集的配置信息和状态信息
由于通过java连接mongodb并不使用jdbc,不是通过执行数据库查询语句进行数据库操作,因此在查询元数据时本文并不借助上述元数据表,获取到的元数据内容也非常有限。
sqlserver元数据
sqlserver的元数据存储在系统表中。下面对部分表的部分属性进行介绍。
字段名称
说明
name
表名
object_id
表标识
schema_id
表所在schema的标识
type_desc
表类型
如果要查询用户表,则type_desc=USER_TABLE 。
字段名称
说明
object_id
字段所在表的标识
name
字段名
column_id
字段标识
system_type_id
字段的系统类型标识
user_type_id
用户定义的字段类型标识
max_length
字段的最大长度
precision
如果字段是数值类型,则标识字段精度
scale
字段的小数位数
is_nullable
字段是否可以为空
字段名称
说明
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