我们有一个SQL脚本可以在多种类型的数据库上执行。是否可以获取正在执行SQL脚本的当前数据库的类型?
注意:我们不能使用非标准SQL,即。 TSQL等。
答案 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中是否存在这些项目。我想是的。