在試圖回答我碰到這個金塊就這個問題我自己,最終經過加「甲骨文」我的查詢詞:如何使用標準SQL提取視圖的定義?
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
其中一期工程,但不便於攜帶。我如何在MySQL上做同樣的事情? SQLite的?其他?
在試圖回答我碰到這個金塊就這個問題我自己,最終經過加「甲骨文」我的查詢詞:如何使用標準SQL提取視圖的定義?
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
其中一期工程,但不便於攜帶。我如何在MySQL上做同樣的事情? SQLite的?其他?
由於數據庫元數據不是標準化的,因此沒有標準的方法來做到這一點。
那麼,有IS ANSI標準稱爲INFORMATION_SCHEMA。許多供應商包括Microsoft(SQL Server),Oracle,MySQL,Postgres都支持它,所以這可能是第一步。
欲瞭解更多信息,請參閱此article here。
至於景色,還有那三個INFORMATION_SCHEMA的意見:
有一個名爲 「VIEW_DEFINITION」 列在「INFORMATION_SCHEMA.VIEWS」視圖中,這樣可能會以某種穩定的方式爲您提供所需的信息。
馬克
SQLite支持INFORMATION_SCHEMA之類的東西。您,用戶,使用名稱INFORMATION_SCHEMA_TABLES定義額外視圖,這不完全是「標準」。這篇文章對支持程度有不同的看法:http://www.petefreitag.com/item/666.cfm –
對於SQL Server INFORMATION_SCHEMA.VIEWS限制輸出長度爲4000個字符,這對我來說使得它非常不可靠。
以下工作與定義爲nvarchar(最大)要好得多,適用於多個對象類型(VIEW,SQL_STORED_PROCEDURE,SQL_SCALAR_FUNCTION,SQL_INLINE_TABLE_VALUED_FUNCTION,SQL_TABLE_VALUED_FUNCTION,甚至更多,這是我看到在我的DB)
SELECT TOP 1000
O.name
, O.type
, O.type_desc
, M.definition
FROM sys.Sql_modules AS M
LEFT OUTER JOIN sys.objects AS O ON M.object_id=O.object_id
+1老兄,我希望我能給你+1000分。如果可以的話,我會把他們從我的代表中拿出來! – Icarus
這很不幸,我應該意識到如果在oracle中有這樣一個函數來處理它,那是因爲一個標準不存在。謝謝! –
不幸,但不完全正確 - 請參閱我的答案。 –