查询当前的数据库中的表名称

前段时间做项目,需要获取到不同的数据库中,当前登录的用户的表的名称。数据库类型包括MySQLOracleHive数据库,这三种数据库获取当前表名称的方法不同,总结如下。

Hive获取当前用户的表名称

  1. 使用show tables

    1
    show tables like '*name*'; -- 显示当前数据库中所有表的名称
  2. 由于Hive的元数据是存储在mysql中,可以从元数据库中获取到表的相关信息。获取表的信息主要是从dbstbls两个表中获取。两个表中的字段如下图所示:
    dbs表中的字段
    tbls表中的字段

两张表通过db_id这个字段进行连接,可以得到每个库中有那些表:

1
select b.tbl_name tableName from dbs a join tbls b on(a.db_id = b.db_id) where a.name = ?

mysql获取当前库的表名称

  1. mysql也可以用show tables的方式
  2. information_schema.tables这张表中获取。
    1
    2
    select table_name tableName from information_schema.tables s where s.table_schema = database()
    -- database()函数为获取当前所用的数据库。

oracle获取当前用户的表名称

oracle没有库的概念,oracle的用户相当于库。也就是一个用户下可以有那些表。可以使用如下的sql语句查询:

1
select table_name tableName from user_tables

参考资料