sql - Teradata - 如何在 SQL Assistant 查询工具下添加列出 Teradata 服务器上的所有可用数据库?

标签 sql database teradata

我正在使用 Teradata SQL Assistant。我是 Teradata 数据库的新用户。 与在 SQL Server Management Studio 中一样,我无法通过 SQL Assistant 查看 Teradata Server 上的可用数据库。

所以我只想问,如何在 SQL Assitant 中列出 Teradata Server 上所有可用的数据库。 只有这些信息,我才能决定我需要哪些数据库并可以请求所需的访问权限。

我在 Google 上搜索并发现我们需要在 SQL Assitant 中手动添加数据库,除非您知道数据库名称,否则这不是很有帮助。是否有任何其他可用的工具可以像在 SSMS 中那样以结构化排序的方式向我显示可用的数据库列表?

任何信息链接都会有所帮助。

谢谢。

最佳答案

如@dnoeth 所述,您可以通过查询 DBC.databasesV 表来获取数据库列表。如果您还想查看层次结构,可以在该表中查看 OwnerName 并根据该父/子关系创建层次结构。

在 SQL 中直观地显示层次结构的一种方法是使用递归 CTE。在你的情况下:

WITH RECURSIVE dbs AS
(
    SELECT 

        databasename,
        ownername,
        0 AS depth,
        cast(databasename AS VARCHAR(500)) AS path,
        CAST(DatabaseName AS VARCHAR(500)) AS pretty_hierarchy

    FROM "DBC".databasesv
    WHERE DatabaseName = 'DBC'

    UNION ALL

    SELECT
        dbsv.databasename,
        dbsv.ownername,
        depth + 1 AS depth,
        path || '>' || dbsv.databasename,
        substring('            ' FROM 1 FOR (dbs.depth + 1)*3) || dbsv.DatabaseName 
    FROM
        dbs INNER JOIN "DBC".DatabasesV dbsv ON
            dbsv.OwnerName = dbs.databasename AND
            dbsv.DatabaseName <> dbs.databasename
    WHERE dbs.depth <=10
)
SELECT * FROM dbs ORDER BY "path", depth

关于sql - Teradata - 如何在 SQL Assistant 查询工具下添加列出 Teradata 服务器上的所有可用数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41546587/

相关文章:

c# - 如何在 .net windows 窗体应用程序中将访问控制与我的 ORM 集成?

android - 查询创建的 dbView(不是表)时出错!

c# - Keyset(Seek) 分页和 MongoDb 驱动程序 C#

teradata - 连续数据跨度 T-Sql

sql - 比较两组 SQL "GROUP BY"结果

mysql - 如何对具有不同值但相同名称的主键进行分组并使用 datediff

sql - 在日期中查找简单的频率模式

.net - 尝试使用 TdDataAdapter.Fill() (Teradata DataAdapter) 填充 DataTable 时出现 System.Net.Sockets.SocketException

mysql - 单表子查询

mysql - 使用 MySQL GROUP BY,如何控制在非聚合列中选择的默认值?