有没有办法使用 PHP 的 PDO 获取数据库元数据。
我正在寻找类似于 Java JDBC 数据库元数据接口的东西。
我感兴趣的是检索给定表的外键列表,但我不希望解决方案绑定到任何特定的 DBMS。
到目前为止,我发现的是 information_schema,它是 ANSI/ISO SQL:2003 标准并存储这些元数据,但我不确定所有 RDBMS 是否都符合它,通常最好使用无 SQL 的解决方案(如 JAVA DatabaseMetadata)。
感谢您的任何意见,
有没有办法使用 PHP 的 PDO 获取数据库元数据。
我正在寻找类似于 Java JDBC 数据库元数据接口的东西。
我感兴趣的是检索给定表的外键列表,但我不希望解决方案绑定到任何特定的 DBMS。
到目前为止,我发现的是 information_schema,它是 ANSI/ISO SQL:2003 标准并存储这些元数据,但我不确定所有 RDBMS 是否都符合它,通常最好使用无 SQL 的解决方案(如 JAVA DatabaseMetadata)。
感谢您的任何意见,
PHP PDO 缺少这似乎是一件相当严重的事情……而 getColumnMeta 仍然是“实验性的”。
只是一个想法:它几乎不优雅,但它可能是在极端情况下需要考虑的事情,你真的想要或需要尽可能多的 dbase 或列元数据作为 poss:使用 PHP exec() 运行(对于 MySQL):
mysqldump -d -h localhost -u username -ppwd databasename > dumpfile.sql
然后检查 dumpfile.sql。显然,您必须为其他 DBMS 找到类似的命令......
我不确定它们是否相等,但对于 mssql 你还有一个 information_schema,我不知道其他 DBMS 是否也有相同的模式
http://msdn.microsoft.com/en-us/library/aa933204%28SQL.80%29.aspx
您还获得了这些以提供有关您的数据库结构的信息
http://dev.mysql.com/doc/refman/5.0/en/explain.html
http://dev.mysql.com/doc/refman/5.0/en/show-index.html
但这对所有其他 DBMS 再次不起作用(JDBS 使用 desc 而不是 DESCRIBE)
所以我想没有单一/一致的方法来检索多个 DBMS 的数据库结构,也许您可以不从数据库中提取结构,而是从应用程序中的模型中提取结构?