この質問に自分で答えようとして、最終的にクエリ用語に「オラクル」を追加した後、このナゲットに出くわしました。
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、おそらくそれ以上、これは私の 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
さて、INFORMATION_SCHEMAと呼ばれるANSI規格があります。Microsoft(SQL Server)、Oracle、MySQL、Postgresを含む多くのベンダーがこれをサポートしているため、これが最初のステップになる可能性があります。
詳細については、こちらの記事を参照してください。
ビューに関しては、次の3つのINFORMATION_SCHEMAビューがあります。
「INFORMATION_SCHEMA.VIEWS」ビューには「VIEW_DEFINITION」という列があります。これにより、必要な情報がある程度標準化された方法で提供される可能性があります。
マーク
データベースのメタデータは標準化されていないため、これを行う標準的な方法はありません。