2017-01-09 345 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

相關問題