IBM PureData System for Analytics (Netezza) 与 Db2 SQL 兼容性
在大多数情况下,Db2® 与 Netezza® 产品提供等同的 SQL 支持。例如,在大多数情况下,特定 Netezza SQL 命令有等同的 Db2 SQL 语句,您无需修改代码即可使用。在有限数目的情况下,需要进行更改。
| Netezza SQL 命令 | Db2支持 |
|---|---|
| ALTER AGGREGATE | 没有可用的 Db2 ALTER AGGREGATE 语句。请使用 Db2 ALTER FUNCTION 语句更改聚集定义。IBM® Database Harmony Profiler 工具会将 ALTER AGGREGATE 命令转换为 ALTER FUNCTION 语句。 |
| ALTER FUNCTION | Db2 ALTER FUNCTION 语句支持的 Netezza ALTER FUNCTION 命令参数只有 FENCED 和 NOFENCED。请使用 Db2 CREATE [OR REPLACE] FUNCTION 语句更改函数定义。 |
| ALTER GROUP | 没有可用的 Db2 ALTER GROUP 语句。请使用角色代替组。 |
| ALTER HISTORY CONFIGURATION | 没有可用的 Db2 ALTER HISTORY CONFIGURATION 语句。要收集和查看有关数据库使用情况的历史数据,请使用 Db2 监视功能。 |
| ALTER LIBRARY | 没有可用的 Db2 ALTER LIBRARY 语句。Database Harmony Profiler 工具会注释掉 ALTER LIBRARY 命令。
为确保所依赖的库可供 Db2 产品访问,请将它们放在 Windows 操作系统上的 LIBPATH 或 PATH 环境变量所指定的目录中,或者放在 Linux 和 UNIX 操作系统上的实例级函数目录 ($inst_home_dir/sqllib/function/) 中。 |
| ALTER SCHEMA | Db2 ALTER SCHEMA 语句不支持 Netezza ALTER SCHEMA 命令的某些子句:
|
| ALTER SESSION | 没有可用的 Db2 ALTER SESSION 语句。请考虑使用 WLM_CANCEL_ACTIVITY 或 WLM_SET_CONN_ENV 过程。 |
| ALTER TABLE | Db2 ALTER TABLE 语句不支持 Netezza ALTER TABLE 命令的某些功能:
|
| ALTER USER | 没有可用的 Db2 ALTER USER 语句。要变更用户,您可使用 Web 控制台。 |
| ALTER VIEW | Db2 ALTER VIEW 语句仅支持 Netezza ALTER VIEW 命令的部分子句:
|
| ALTER VIEWS ON | 没有可用的 Db2 ALTER VIEWS ON 语句。ALTER VIEWS ON 命令在 Netezza 中用于具体化视图。 具体化查询表 (MQT) 是 Netezza 具体化视图的可能替换项。Database Harmony Profiler 工具会将具体化视图转换为 MQT。请修改 ALTER VIEWS ON 命令中与基本表关联的 MQT。 |
| BEGIN | 没有可用的 Db2 BEGIN TRANSACTION 语句。
Db2 产品自动开始事务(工作单元)。请移除 BEGIN TRANSACTION 命令,如有必要,调整应用程序代码以禁用自动落实功能。 |
| COMMENT ON | Db2 COMMENT ON 语句不支持 LIBRARY 和 DATABASE 对象类型。请勿注释数据库,而是注释模式。 |
| COMMIT [WORK|TRANSACTION] | 不支持 TRANSACTION 参数。请将其移除,或使用 WORK 参数。(无论是否指定 WORK 参数,ROLLBACK TRANSACTION 语句的行为方式都相同。) |
| CREATE AGGREGATE | 没有可用的 Db2 CREATE AGGREGATE。请使用 Db2 CREATE FUNCTION 语句来定义聚集。Database Harmony Profiler 工具会将 CREATE AGGREGATE 命令转换为 CREATE FUNCTION 语句。 |
| CREATE DATABASE | 没有可用的 Db2 CREATE DATABASE 语句。Database Harmony Profiler 工具假定数据库只有一个模式,并将 CREATE DATABASE 命令转换为 Db2 SET CURRENT SCHEMA 语句,以便后续创建的所有对象都放在同一个模式下。 |
| CREATE GROUP | 没有可用的 Db2 CREATE GROUP 语句。要创建组,您可使用 Web 控制台。 |
| CREATE HISTORY CONFIGURATION | 没有可用的 Db2 CREATE HISTORY CONFIGURATION 语句。要收集和查看有关数据库使用情况的历史数据,请使用 Db2 监视功能。 |
| CREATE [OR REPLACE] FUNCTION | Db2 CREATE FUNCTION 语句仅支持 Netezza CREATE [OR REPLACE] FUNCTION 命令的部分子句:
|
| CREATE [OR REPLACE] LIBRARY | 没有可用的 Db2 CREATE [OR REPLACE] LIBRARY 语句。Database Harmony Profiler 工具会注释掉 CREATE [OR REPLACE] LIBRARY 命令。
为确保所依赖的库可访问,请将它们放在 Windows 操作系统上的 LIBPATH 或 PATH 环境变量所指定的目录中,或者放在 Linux 和 UNIX 操作系统上的实例级函数目录 ($inst_home_dir/sqllib/function/) 中。 |
| CREATE SCHEDULER RULE | 没有可用的 Db2 CREATE SCHEDULER RULE 语句。请考虑使用 Db2 WLM 功能。 |
| CREATE SCHEMA | Db2 CREATE SCHEMA 语句不支持 PATH 子句。 对于动态 SQL 语句,SQL 路径是 Db2 CURRENT PATH 专用寄存器的值,您可使用 SET PATH 命令进行更改。对于静态 SQL 语句,请使用 FUNCPATH 绑定选项指定 SQL 路径。 |
| CREATE TABLE | 在 Db2 CREATE TABLE 语句与 Netezza CREATE TABLE 命令之间存在多项差异:
|
| CREATE USER | 没有可用的 Db2 CREATE USER 语句。要创建用户,您可使用 Web 控制台。 |
| DROP GROUP | 没有可用的 Db2 DROP GROUP 语句。请使用角色代替组。 |
| DROP HISTORY CONFIGURATION | 没有可用的 Db2 DROP HISTORY CONFIGURATION 语句。要收集和查看有关数据库使用情况的历史数据,请使用 Db2 监视功能。 |
| DROP USER | 没有可用的 Db2 DROP USER 语句。要删除用户,您可使用 Web 控制台。 |
| GENERATE [EXPRESS] STATISTICS | 没有可用的 Db2 GENERATE [EXPRESS] STATISTICS 语句。请使用 Db2
RUNSTATS 命令或自动统计信息收集功能。 IBM Database Harmony Profiler 工具会将 GENERATE STATISTICS 命令转换为 RUNSTATS 命令。RUNSTATS 命令不支持 GENERATE STATISTICS 命令中使用的列范围语法,因此 Database Harmony Profiler 工具不会保留该语法。 |
| GRANT | Db2 GRANT 语句仅支持 Netezza GRANT 命令所支持的部分对象类型和特权:
|
| GROOM TABLE | 没有可用的 Db2 GROOM TABLE 语句。对于按列组织的表,将会自动完成重组。对于按行组织的表,请使用 REORG TABLE 语句。 |
| INSERT | Db2 INSERT 语句不支持 DEFAULT VALUES 子句。请针对每个列,将 DEFAULT VALUES
子句替换为 DEFAULT 关键字。例如,将 INSERT INTO tb1(c1, c2) DEFAULT VALUES
更改为 INSERT INTO tb1(c1, c2) VALUES (DEFAULT, DEFAULT)。 |
| LOCK TABLE | Db2 LOCK TABLE 语句不支持 Netezza LOCK TABLE 命令的 NOWAIT 参数。并且,必须在 Db2 语句中使用 SHARE 或 EXCLUSIVE 锁定方式参数。请考虑将
Netezza ACCESS EXCLUSIVE 方式参数替换为 Db2 EXCLUSIVE 方式参数,并考虑将
Netezza SHARE、SHARE ROW EXCLUSIVE 和 EXCLUSIVE 方式参数替换为
Db2 SHARE 方式参数。 Database Harmony Profiler 工具会执行以下操作:
|
| REVOKE | Db2 REVOKE 语句仅支持 Netezza REVOKE 命令所支持的部分对象类型和特权:
|
| ROLLBACK [WORK|TRANSACTION] | 不支持 TRANSACTION 参数。请将其移除,或使用 WORK 参数。(无论是否指定 WORK 参数,ROLLBACK TRANSACTION 语句的行为方式都相同。) |
| SELECT | 在 Db2 SELECT 语句与 Netezza SELECT 命令之间存在多项差异,其中一些差异可通过将 SQL_COMPAT 全局变量设置为 'NPS' 来解决:
|
| SET | Db2 产品不支持大部分 Netezza 会话变量。请使用其他方法来调整和配置 Db2 产品。 |
| SHOW LIBRARY | 没有可用的 Db2 SHOW LIBRARY 语句。Database Harmony Profiler 工具会注释掉 SHOW LIBRARY 命令。 |
| TRUNCATE TABLE | Db2 TRUNCATE TABLE 语句需要 IMMEDIATE 参数。此参数指定立即处理截断操作,并且不可撤销。 |
| Netezza 运算符 | Db2支持 |
|---|---|
| ! 阶乘运算符 | 不支持此运算符。您可以改为创建阶乘函数。 |
| ^ 和 ** 指数运算符 | 缺省情况下,不支持这些运算符。请通过将 SQL_COMPAT 全局变量设置为 'NPS' 来启用此支持。 |
| # 按位 XOR 运算符 | 缺省情况下,不支持此运算符。请通过将 SQL_COMPAT 全局变量设置为 'NPS' 来启用此支持。 |
| << 和 >> 按位的左移位和右移位运算符 | 不支持这些运算符。您可以将这些运算符替换为以 2 为幂的乘法或除法。例如,col1 << 4 等同于 col1 * power(2, 4)。 |
| Netezza 语言构造 | Db2支持 |
|---|---|
| 系统视图(名称为 _V_viewname 或 _VT_viewname)和系统表(名称为 _T_tablename) | 不支持系统视图和系统表。如有可能,请使用 Db2 SYSCAT 视图。否则,请创建您自己的视图。 |
| 列名中的 & 符 | 除非使用定界符(例如,"SALES&"),否则不支持此语法。 |
| 作为标识起始字符的下划线 (_) | 除非使用定界符(例如,"_SALES"),否则不支持此语法。 |