在尝试为自己回答这个问题时,在最终将“oracle”添加到我的查询词之后,我遇到了这个问题:
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
哪个有效,但不可移植。我如何在 MySQL 上做同样的事情?SQLite?其他的?
FOR SQL Server INFORMATION_SCHEMA.VIEWS 将输出长度限制为 4000 个字符,这对我来说非常不可靠。
以下内容在定义为 nvarchar(max) 时效果更好,并且适用于多种对象类型(VIEW、SQL_STORED_PROCEDURE、SQL_SCALAR_FUNCTION、SQL_INLINE_TABLE_VALUED_FUNCTION、SQL_TABLE_VALUED_FUNCTION,可能更多,这是我在数据库中看到的)
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
好吧,有一个称为INFORMATION_SCHEMA的 ANSI标准。包括 Microsoft (SQL Server)、Oracle、MySQL、Postgres 在内的许多供应商都支持它,因此这可能是第一步。
有关详细信息,请参阅此处的这篇文章。
至于视图,它们有三个 INFORMATION_SCHEMA 视图:
在“INFORMATION_SCHEMA.VIEWS”视图中有一个名为“VIEW_DEFINITION”的列,因此它可能会以某种标准化的方式为您提供所需的信息。
马克
由于数据库元数据没有标准化,因此没有标准的方法可以做到这一点。