连接到Netezza系统后有没有办法切换数据库?例如,在MSSQL中,可以发送命令use database_name
以切换到database_name。
Netezza中有没有像mssql上的“use”一样的东西?
http://technet.microsoft.com/en-us/library/ms188366.aspx
我的询问理由是关于元数据查询;我只能访问“当前连接的数据库”的_v_table。
答案 0 :(得分:11)
在Version 7.0
之前,没有相当于USE
的内容。您必须登录服务器上的特定数据库,但仍然可以使用访问任何对象。 database.schema.objectname
发布Version 7.0
等效内容为Set Catalog
SET CATALOG <database_name>
关于您的具体询问。请考虑使用_V_TABLE_XDB
代替_V_TABLE
。此系统表应该为您提供所有表的列表,而不仅仅是您连接到的数据库中的表。
答案 1 :(得分:5)
如果您正在使用NPS v7.0 +,那么SET CATALOG命令将动态连接到另一个数据库(无需断开连接并重新连接)。这个命令的优点在于它可以从ODBC / JDBC客户端以及nzsql脚本中提交。
答案 2 :(得分:3)
在Netezza中,您可以使用以下命令访问其他数据库 -
nzsql -u <username> -pw <password> -db <databasename> -host <netezza server IP>
希望这会对你有所帮助。
答案 3 :(得分:0)
我们知道在netezza中执行任何查询时,我们需要在连接url中指定数据库名称,我们应该根据必须在其上执行操作的所需数据库来使数据库名称动态化,因此在使用简单的Java代码的情况下,我们可以使用下面的情况1),如果是弹簧靴,我们可以在下面的情况2)中使用。
案例1) 在netezza中执行任何查询之前,我们可以将语句执行为
SET CATALOG#数据库名称#;
因此它将自动切换到set命令中提供的数据库。
案例2) 我们可以在运行时切换数据库
来在netezza中切换数据库在为数据源创建bean时,使用Apache基本数据源( BasicDataSource )代替 DriverManagerDataSource 。
执行- jdbcTemplate.execute(“ SET CATALOG#数据库名称#”) 在执行任何查询之前。