2017-01-09 346 views
1

我正在使用Teradata SQL Assistant。我是Teradata数据库的新用户。 和SQL Server Management Studio一样,我无法通过SQL Assistant看到Teradata Server上的可用数据库。Teradata - 如何在SQL Assistant查询工具下添加Teradata服务器上的所有可用数据库?

所以我只想问一下,如何列出中的所有可用数据库SQL Assitant。 只有这些信息,我才能够决定我需要哪些数据库&可以请求所需的访问。

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

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

谢谢。

+2

的'dbc.DatabasesV'视图显示所有现有数据库/用户名,但你可能会更好用'dbc.DatabasesVX'而不是仅列出数据库在当前用户访问。 – dnoeth

+0

@dnoeth,但在数据库在数据库(分层数据库)的情况下?我可能需要一个单独的代码来解决这些问题。所以我正在寻找一个工具,它会默认为我做。像SQL Server Management Studio ... – Aditya

回答

2

正如@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 
+0

这真是一个很酷的解决方案!添加更多内容,我正在寻找一种工具(查询工具,如SQL Assistant),这些工具将在Database Explorer窗格中预先添加这些数据库。任何你知道的工具? – Aditya

+0

我使用atanasuite,它有一个漂亮的数据库浏览器窗格和一百万额外的内置工具。 – JNevill

+0

我希望我们不需要使用Atanasuite在db窗格中手动添加数据库?将尝试如果我能得到这个。不确定老板是否会批准:/还听说过Teradata工作室......? – Aditya

相关问题