如何查找当前数据库类型

时间:2011-03-15 07:28:25

标签: sql

我们有一个SQL脚本可以在多种类型的数据库上执行。是否可以获取正在执行SQL脚本的当前数据库的类型?

注意:我们不能使用非标准SQL,即。 TSQL等。

4 个答案:

答案 0 :(得分:5)

不,ANSI SQL中没有关于确定数据库供应商的信息。

答案 1 :(得分:1)

不,不在SQL语句中。

如果您碰巧使用JDBC,则应该能够从java.sql.DatabaseMetaData中提取足够的信息。看看getDatabaseProductName

我认为类似的功能也适用于其他平台。

答案 2 :(得分:0)

虽然ANSI SQL中没有关于确定数据库供应商的信息,但您可以尝试猜测并检查。如果您有可供选择的预定供应商列表,则此问题会更容易。我最近遇到了这个问题,我只有一个SQL连接到数据库。我确实知道数据库文件的文件扩展名,因此使其成为受限制的供应商列表。我运行了各种SQL语句来列出表名,直到一个工作。据我所见,获取每个数据库供应商的表名列表是不同的。

如果你所做的只是运行SQL脚本,这个方法确实需要人工交互。现在,如果只有一种标准的方法来处理ANSI SQL中的错误或try-catch ...

答案 3 :(得分:0)

SELECT *
FROM information_schema.sql_implementation_info
WHERE implementation_info_name LIKE 'DBMS%'
    ;

在这里工作:

 implementation_info_id | implementation_info_name | integer_value | character_value | comments 
------------------------+--------------------------+---------------+-----------------+----------
 17                     | DBMS NAME                |               | PostgreSQL      | 
 18                     | DBMS VERSION             |               | 09.01.0002      | 
(2 rows)

我无法判断information_schema中是否存在这些项目。我想是的。

matrix of information schema support