【问题标题】:Get a list of teradata databases via jdbc?通过 jdbc 获取 teradata 数据库列表?
【发布时间】:2014-04-25 17:52:44
【问题描述】:

我正在使用 com.teradata.jdbc.TeraDriver

我需要获取所有数据库的列表以显示给用户。为此,我创建 java.sql.Connection 并调用以下命令:

connection.getMetaData().getSchemas()

这将返回所有 teradata 数据库的列表。但是我想从这个列表中排除用户。

为了让自己更清楚。如果我们在 Teradata Studio Express 中查看 teradata 数据库,我们可以看到所有数据库的列表。在数据库的详细信息中有一个称为数据库类型的属性。该值是“用户”或“数据库”。我想通过 jdbc 获取所有“数据库”类型的数据库。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 从表面上看,问题在于用户是 Teradata 中的数据库。唯一的区别是用户有密码。因此,用户的模式可以像任何其他数据库一样包含对象。

标签: jdbc teradata


【解决方案1】:

开发您自己的 GetSchema() 方法来查询 DBC.Databases 视图:

public static String getSchema (Connection con)
throws SQLException
{
 Statement stmt = con.createStatement () ;
 try {
  ResultSet rs = stmt.executeQuery ("SELECT DatabaseName FROM DBC.Databases WHERE DBKind = 'D'") ;
  try {
   rs.next () ;
   return rs.getString (5) ;
  } finally { rs.close () ; }
 } finally { stmt.close () ; }
}

如果您希望显示的对象更加离散,则可以使用附加逻辑在连接字符串中指定 UseXViews 参数,以仅返回用户已通过显式或隐式权限。

链接指向用于提供答案的网站。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2016-07-08
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 1970-01-01
    相关资源
    最近更新 更多