0

在尝试为自己回答这个问题时,在最终将“oracle”添加到我的查询词之后,我遇到了这个问题:

select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;

哪个有效,但不可移植。我如何在 MySQL 上做同样的事情?SQLite?其他的?

4

3 回答 3

3

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
于 2011-06-23T15:19:20.537 回答
2

好吧,有一个称为INFORMATION_SCHEMA的 ANSI标准。包括 Microsoft (SQL Server)、Oracle、MySQL、Postgres 在内的许多供应商都支持它,因此这可能是第一步。

有关详细信息,请参阅此处的这篇文章

至于视图,它们有三个 INFORMATION_SCHEMA 视图:

  • INFORMATION_SCHEMA.VIEWS
  • INFORMATION_SCHEMA.VIEW_COLUMN_USAGE
  • INFORMATION_SCHEMA.VIEW_TABLE_USAGE

在“INFORMATION_SCHEMA.VIEWS”视图中有一个名为“VIEW_DEFINITION”的列,因此它可能会以某种标准化的方式为您提供所需的信息。

马克

于 2009-09-03T05:32:52.167 回答
1

由于数据库元数据没有标准化,因此没有标准的方法可以做到这一点。

于 2009-09-02T23:15:01.120 回答